pip install me cab
fonctionnait très bien.Ce que vous obtenez de ceci est "une longue chaîne", pas une liste ou un taple. Un peu gênant.
J'ai fait une classe avec python. En faisant MeCab.Tagger ('-Odump')
dans le constructeur, toutes les informations récupérées par MeCab sont stockées dans le champ, et chaque méthode récupère uniquement les informations nécessaires de ce champ dans l'expression normale et les produit.
Le code est comme suit.
MeCab_handler.py
import re, MeCab
import numpy as np
import jaconv
from pykakasi import kakasi
class MeCab_handler:
"""
MeCab.Tagger('-Odump').parse((Arguments du constructeur))Et
Obtenez le résultat sous forme de ndarray unidimensionnel dans chaque méthode
"""
def __init__(self, sentence):
self.parse_result = MeCab.Tagger('-Odump').parse(sentence)
def get_separated(self):
"""
Partage
"""
tmp = np.array(re.findall('\n[0-9]+ ([^ ]*)', self.parse_result))
return tmp[0:np.size(tmp)-1] #Couper EOS
def get_words_basic(self):
"""
Forme basique
"""
tmp = np.array(re.findall('\n[0-9]+ [^ ]* (?:[^,]*,){6,6}([^,]*)', self.parse_result))
return tmp[0:np.size(tmp)-1]
def get_POS(self, need_detail=False):
"""
Partie
Argument facultatif nécessaire_Si le détail est vrai
Sous-classe(Jusqu'à 3 étapes)Obtenez-le s'il y a
"""
if need_detail:
tmp = np.array(re.findall('\n[0-9]+ [^ ]* ([^,]*(?:,[^*,]+(?:,[^*,]+(?:,[^*,])?)?)?)', self.parse_result))
else:
tmp = np.array(re.findall('\n[0-9]+ [^ ]* ([^,]*)', self.parse_result))
return tmp[0:np.size(tmp)-1] #Couper EOS
def get_conjugation_type(self):
"""
Type d'utilisation
"""
tmp = np.array(re.findall('\n[0-9]+ [^ ]* (?:[^,]*,){4,4}([^,]*)', self.parse_result), dtype='object')
tmp = np.where(tmp=='*', None, tmp)
return tmp[0:np.size(tmp)-1]
def get_conjugation_form(self):
"""
Type d'utilisation
"""
tmp = np.array(re.findall('\n[0-9]+ [^ ]* (?:[^,]*,){5,5}([^,]*)', self.parse_result))
return tmp[0:np.size(tmp)-1]
def get_katakana(self):
"""
Katakana
"""
tmp = np.array(re.findall('\n[0-9]+ [^ ]* (?:[^,]*,){7,7}([^,]*)', self.parse_result))
return tmp[0:np.size(tmp)-1]
def get_hiragana(self):
"""
Hiragana
"""
katakanas = self.get_katakana()
hiraganas = np.zeros(0, dtype=katakanas.dtype)
for katakana in katakanas:
hiraganas = np.append(hiraganas, jaconv.kata2hira(katakana))
return hiraganas
def get_how_to_speak(self):
"""
Comment prononcer. avoir_hiragana et obtenez_Cela peut être différent du katakana, etc.
Romaji
"""
tmp = np.array(re.findall('\n[0-9]+ [^ ]* (?:[^,]*,){8,8}([^ ]*)', self.parse_result))
katakanas = tmp[0:np.size(tmp)-1]
kakac = kakasi()
kakac.setMode("K", "a") #Katakana à ascii
kakac.setMode("r", "Hepburn") #Hebon est adopté pour Romaji
conv = kakac.getConverter()
romans = np.zeros(0, dtype='object')
for katakana in katakanas:
romans = np.append(romans, conv.do(katakana))
return romans
J'ai écrit la fonction dans le code source, mais c'est comme indiqué dans le tableau ci-dessous.
Méthode | Exemple (print ('print (MeCab_handler (' Les États-Unis ont pleuré. Movie Doraemon" Nobita's Theory and Practice "). Method) ) |
---|---|
get_separated () | [« National »est« en train de pleurer ». "" Film "" Doraemon "" "" "Nobita" "" "Théorie" "et" "Pratique" ""] |
get_words_basic () | ['National' 'est''cry' '". "" Film "" Doraemon "" "" "Nobita" "" "Théorie" "et" "Pratique" ""] |
get_POS () | `['Noun' 'Verbe auxiliaire' 'Verbe auxiliaire' 'Symbole' |
get_POS (True) | `['Nomenclature, nomenclature propre, région, un''auxiliaire, assistant de cas, verbe général' ', indépendance''verbe auxiliaire''symbole, ponctuation' "" Symbole, parenthèse ouverte "" Nez, nomenclature propre, nom de la personne, prénom "" Auxiliaire, syndiqué "" Nomenclature, général "" Auxiliaire, assistant de cas, général "" |
get_conjugation_type () | `[Aucun Aucun'Five-stage / Kakou Ionbin''Special / Ta'None Aucun Aucun Aucun Aucun Aucun Aucun Aucun Aucun Aucun] |
get_conjugation_form () | ['*' '*' 'Connexion continue''Forme de base' '*' '*' '*' '*' '*' '*' '*' * '*' * '*' * ' ] |
get_katakana () | ['Zenbei''Ga''Nai''Ta' '. "" Aiga "" Doraemon "" "" "Novita" "Non" "Lilon" "À" "Jissen" ""] |
get_hiragana () | ['Zenbei''n'est''pas''wa'. "" Eiga "" Doraemon "" "" "Extended" "" "Riron" "et" "Jissen" ""] |
get_how_to_speak() | ['zenbei' 'ga' 'nai' 'ta' '。' 'eiga' 'doraemon' '「' 'nobita' 'no' 'riron' 'to' 'jissen' '」'] |
Recommended Posts