Import Me Cab
. Beachten Sie, dass es sich nicht um "Import Mecab" handeltWas Sie daraus erhalten, ist "eine lange Zeichenfolge", keine Liste oder ein Taple. Ein wenig unpraktisch.
Ich habe eine Klasse mit Python gemacht. Wenn Sie im Konstruktor "MeCab.Tagger (" -Odump ")" ausführen, werden alle von MeCab abgerufenen Informationen im Feld gespeichert, und jede Methode ruft nur die erforderlichen Informationen aus diesem Feld im normalen Ausdruck ab und gibt sie aus.
Der Code lautet wie folgt.
MeCab_handler.py
import re, MeCab
import numpy as np
import jaconv
from pykakasi import kakasi
class MeCab_handler:
"""
MeCab.Tagger('-Odump').parse((Konstruktorargumente))Und
Erhalten Sie das Ergebnis als eindimensionales ndarray in jeder Methode
"""
def __init__(self, sentence):
self.parse_result = MeCab.Tagger('-Odump').parse(sentence)
def get_separated(self):
"""
Teilen
"""
tmp = np.array(re.findall('\n[0-9]+ ([^ ]*)', self.parse_result))
return tmp[0:np.size(tmp)-1] #Schneiden Sie EOS
def get_words_basic(self):
"""
Grundform
"""
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):
"""
Teil
Optionales Argument erforderlich_Wenn Detail wahr ist
Unterklasse(Bis zu 3 Stufen)Hol es dir, wenn es so ist
"""
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] #Schneiden Sie EOS
def get_conjugation_type(self):
"""
Nutzungsart
"""
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):
"""
Nutzungsart
"""
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):
"""
Wie auszusprechen. erhalten_Hiragana und bekommen_Es kann sich von Katakana usw. unterscheiden.
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 zu Ascii
kakac.setMode("r", "Hepburn") #Hebon wird für Romaji adoptiert
conv = kakac.getConverter()
romans = np.zeros(0, dtype='object')
for katakana in katakanas:
romans = np.append(romans, conv.do(katakana))
return romans
Ich habe die Funktion in den Quellcode geschrieben, aber sie ist wie in der folgenden Tabelle gezeigt.
Methode | Beispiel (print ('print (MeCab_handler (' Die Vereinigten Staaten haben geweint. Film Doraemon" Nobitas Theorie und Praxis "). Methode) ) |
---|---|
get_separated () | `['National''is''crying' '. "" Film "" Doraemon "" "" Nobita "" "" Theorie "" und "" Praxis "" "]" |
get_words_basic () | `['National''is''cry' '". "" Film "" Doraemon "" "" Nobita "" "" Theorie "" und "" Praxis "" "]" |
get_POS () | `['Nomen''Auxiliary' Verb''Auxiliary Verb''Symbol''Nomenclature''Nomenclature''Symbol''Nomenclature''Auxiliary |
get_POS (True) | `['Nomenklatur, Eigennomenklatur, Region, ein' 'Hilfsmittel, Fallassistent, allgemein' 'Verb, Unabhängigkeit' 'Hilfsverb' Symbol, Interpunktion '' Substantiv, allgemein ' "" Symbol, offene Klammer "" Nase, richtige Nomenklatur, Name der Person, Vorname "" Assistent, gewerkschaftlich organisierte "" Nomenklatur, allgemein "" Assistent, Fallassistent, allgemein "" Nomen, Sa-Hen-Verbindung "" |
get_conjugation_type () | [Keine Keine'Five-Stage / Kakou Ionbin''Special / Ta'None Keine Keine Keine Keine Keine Keine Keine Keine Keine Keine] |
get_conjugation_form () | ['*' '*' 'Kontinuierliche Verbindung' 'Grundform' '*' '*' '*' '*' '*' '*' '*' * '*' * '*' * '*' ] |
get_katakana () | ['Zenbei''Ga''Nai''Ta'. "Aiga" "Doraemon" "" Novita "" No "" Lilon "" To "" Jissen ""] " |
get_hiragana () | ['Zenbei''is''not''wa'. "" Eiga "" Doraemon "" "" Extended "" "" Riron "" und "" Jissen ""]] |
get_how_to_speak() | ['zenbei' 'ga' 'nai' 'ta' '。' 'eiga' 'doraemon' '「' 'nobita' 'no' 'riron' 'to' 'jissen' '」'] |
Recommended Posts