Die Funktion der eingeschränkten Analyse (Teilanalyse) von MeCab ist eine Funktion, die verwendet wird, wenn einige morphologische Informationen eines Satzes bekannt sind oder die Grenze bekannt ist. Das Python- und MeCab-Bindungs-Natto-Py bietet drei eingeschränkte Analysemethoden.
--partial
/ -p
Geben Sie beim Abrufen einer MeCab-Instanz die Option "--partial" oder "-p" an.
Die an parse
übergebene Eingabeanweisung beschreibt die Einschränkung im folgenden Format.
Satzteil:
Satzteil. Eine normale morphologische Analyse wird durchgeführt, als ob es keine Einschränkungen gäbe. Morphologische Elemente, die Satzfragmente überspannen, werden jedoch nicht ausgegeben.
Stellen Sie sicher, dass Sie am Ende \ n
(Zeilenvorschub) hinzufügen.
Morphologisches Fragment
Das Format ist "Oberflächenschicht \ t Elementmuster \ n".
Fügen Sie abschließend \ n
am Ende der Eingabeanweisung hinzu.
from natto import MeCab
text = """Garten\t Hoge
Zu
Haniwa\t Hoge
Niwatori\t Hoge
Es gibt.
"""
with MeCab("--partial") as nm:
print(nm.parse(text))
Niwahoge
Hilfs,Fallassistent,Allgemeines,*,*,*,Zu,D.,D.
Haniwa Hoge
Niwatori Hoge
Ist ein Assistent,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga
Das Verb das ist,Unabhängigkeit,*,*,Ein Schritt,Grundform,Ist,Il,Il
.. Symbol,Phrase,*,*,*,*,。,。,。
EOS
Im obigen Beispiel wird das Analyseergebnis an die Standardausgabe gesendet. Verwenden Sie für feinere Einschränkungen jedoch die Merkmale "Grenze" oder "Merkmal".
Wenn Sie die Wortgrenzen im Voraus kennen, können Sie mit dem Schlüsselwortargument border_constraints einen regulären Ausdruck oder eine Zeichenfolge angeben, deren Grenzen kompiliert wurden. Diejenigen, die der angegebenen Grenze für morphologische Elemente entsprechen, werden als ein morphologisches Element behandelt und analysiert.
text = "Es gibt ein Eichhörnchen im Eichhörnchen."
patt = "Niwatori|Haniwa|Garten"
with MeCab() as nm:
#Informationen zu jedem MeCabNode erhalten Sie, indem Sie eine morphologische Randbedingung angeben
for n in nm.parse(text, boundary_constraints=patt, as_nodes=True):
if not (n.is_bos() or n.is_eos()):
print("{}:\t{}". format(n.surface, n.feature))
# BOS/EOS-Knoten weglassen
Garten:Substantiv,Allgemeines,*,*,*,*,*
Zu:Partikel,Fallassistent,Allgemeines,*,*,*,Zu,D.,D.
Haniwa:Substantiv,Allgemeines,*,*,*,*,Haniwa,Haniwa,Haniwa
Niwatori:Substantiv,Allgemeines,*,*,*,*,Niwatori,Hähnchen,Hähnchen
Aber:Partikel,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga
Ist:Verb,Unabhängigkeit,*,*,Ein Schritt,Grundform,Ist,Il,Il
。:Symbol,Phrase,*,*,*,*,。,。,。
Weitere Informationen finden Sie unter 6.2. Operation für reguläre Ausdrücke und re.finditer. /re.html#re.finditer).
Mit dem Schlüsselwortargument feature_constraints können Sie die Teilwortklassifizierung für jedes bestimmte Formularelement angeben. Tupel, das Teilwörter für morphologische Elemente als Paar enthält, und diese morphologischen Elemente und Teilwortzuordnungen werden weiter im Tupel gespeichert. Übergeben Sie es dann wie folgt an die Analysemethode:
feat = (("Niwatori","Hoge"), ("Haniwa","HogeHoge"), ("Garten","更にHoge"))
with MeCab() as nm:
#Rufen Sie Informationen für jeden MeCabNode ab, indem Sie Teilworteinschränkungen für einige Formularelemente angeben
for n in nm.parse(text, feature_constraints=feat, as_nodes=True):
if not (n.is_bos() or n.is_eos()):
print("{}:\t{}". format(n.surface, n.feature))
# BOS/EOS-Knoten weglassen
Garten:Weiteres Lösen
Zu:Partikel,Fallassistent,Allgemeines,*,*,*,Zu,D.,D.
Haniwa:Hogehoge
Niwatori:Hoge
Aber:Partikel,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga
Ist:Verb,Unabhängigkeit,*,*,Ein Schritt,Grundform,Ist,Il,Il
。:Symbol,Phrase,*,*,*,*,。,。,。
das ist alles
Recommended Posts