Подсчет глаголов, существительных и других частей речи с помощью nltk python
У меня есть несколько текстов и я хотел бы создать профили основе их использования различных частей речи, как существительные и глаголы. В основном мне нужно подсчитать, сколько раз используется каждая часть речи.
я пометил текст, но не уверен, как идти дальше:
tokens = nltk.word_tokenize(text.lower())
text = nltk.Text(tokens)
tags = nltk.pos_tag(text)
Как я могу сохранить для каждой части речи в переменную?
1 ответов
на pos_tag
метод возвращает вам список пар (токенов, тегов):
tagged = [('the', 'DT'), ('dog', 'NN'), ('sees', 'VB'), ('the', 'DT'), ('cat', 'NN')]
если вы используете Python 2.7 или позже, то вы можете сделать это просто с:
>>> from collections import Counter
>>> counts = Counter(tag for word,tag in tagged)
>>> counts
Counter({'DT': 2, 'NN': 2, 'VB': 1})
чтобы нормализовать подсчеты (давая вам долю каждого), сделайте:
>>> total = sum(counts.values())
>>> dict((word, float(count)/total) for word,count in counts.items())
{'DT': 0.4, 'VB': 0.2, 'NN': 0.4}
обратите внимание, что в более старых версиях Python вам придется реализовать Counter
сам себе:
>>> from collections import defaultdict
>>> counts = defaultdict(int)
>>> for word, tag in tagged:
... counts[tag] += 1
>>> counts
defaultdict(<type 'int'>, {'DT': 2, 'VB': 1, 'NN': 2})