2016-05-16 26 views
2

Ich benutze spacy mit Python und es funktioniert gut für die Kennzeichnung jedes Wort, aber ich frage mich, ob es möglich war, die häufigsten Wörter in einer Zeichenfolge zu finden. Ist es auch möglich, die gebräuchlichsten Substantive, Verben, Adverbien und so weiter zu bekommen?Wie findet man die häufigsten Wörter mit Spacy?

Es ist eine count_by-Funktion enthalten, aber ich kann nicht scheinen, um es sinnvoll zu starten.

Antwort

6

Dies sollte im Grunde das gleiche wie das Zählen alles anderen in Python aussehen. Mit spaCy können Sie einfach über das Dokument iterieren, und Sie erhalten eine Folge von Token-Objekten zurück. Diese können verwendet werden, um auf die Anmerkungen zuzugreifen.

from __future__ import print_function, unicode_literals 
import spacy 
from collections import defaultdict, Counter 

nlp = spacy.load('en') 

pos_counts = defaultdict(Counter) 
doc = nlp(u'My text here.') 

for token in doc: 
    pos_counts[token.pos][token.orth] += 1 

for pos_id, counts in sorted(pos_counts.items()): 
    pos = doc.vocab.strings[pos_id] 
    for orth_id, count in counts.most_common(): 
     print(pos, count, doc.vocab.strings[orth_id]) 

Beachten Sie, dass die Attribute .orth und .pos Ganzzahlen sind. Sie können die Zeichenfolgen, denen sie zugeordnet sind, über die Attribute .orth_ und .pos_ abrufen. Das .orth-Attribut ist die nicht normalisierte Ansicht des Tokens, es gibt auch die Zeichnungsansicht .lower, .lemma usw. Möglicherweise möchten Sie eine .norm-Funktion binden, um Ihre eigene String-Normalisierung durchzuführen. Weitere Informationen finden Sie in den Dokumenten.

Die ganzen Zahlen sind nützlich für Ihre Zählungen, da Sie Ihr Zählprogramm viel effizienter machen können, wenn Sie über einen großen Korpus zählen. Sie können die häufigen Zählungen auch in einer Reihe speichern, um die Geschwindigkeit und Effizienz zu erhöhen. Wenn Sie sich nicht damit befassen möchten, können Sie das Attribut .orth_ direkt verwenden oder dessen Alias ​​.text verwenden.

Beachten Sie, dass das Attribut .pos im obigen Snippet einen grobkörnigen Satz von Wortarten-Tags enthält. Die umfangreicheren TreeBank-Tags sind im Attribut .tag verfügbar.

5

Ich musste vor kurzem Häufigkeit aller Tokens in einer Textdatei zählen. Sie können Wörter herausfiltern, um POS-Tokens zu erhalten, die Sie mögen, indem Sie das Attribut pos_ verwenden. Hier ist ein einfaches Beispiel: