Учитывая одно слово, такое как «таблица», я хочу определить, что он наиболее часто используется, поскольку его наиболее распространенное использование - это существительное, глагол или прилагательное. Я хочу сделать это в python. Есть ли что-то еще помимо wordnet? Я не люблю wordnet. Или, если я использую wordnet, как бы я сделал это именно с этим?Идентифицировать слово как существительное, глагол или прилагательное
ответ
import nltk
text = 'This is a table. We should table this offer. The table is in the center.'
text = nltk.word_tokenize(text)
result = nltk.pos_tag(text)
result = [i for i in result if i[0].lower() == 'table']
print(result) # [('table', 'JJ'), ('table', 'VB'), ('table', 'NN')]
Что делать, если это слово вне контекста. Просто слово «таблица» и его наиболее распространенное использование, будь то его существительное, глагол и т. Д. –
Что вы подразумеваете под «вне контекста»? Именно контекст делает это определение (часть речи) возможным. – Vidul
Любое существительное может быть указано. – stark
Если у вас есть слово из контекста и хотите знать его наиболее общее пользование, вы можете взглянуть на чужой таблице частот (например, WordNet), или вы можете сделать свой собственный подсчет: Просто найти помеченные корпус, который достаточно велик для ваших целей и подсчет его экземпляров. Если вы хотите использовать бесплатный корпус, NLTK включает корпус Brown (1 миллион слов). NLTK также предоставляет методы для работы с более крупными, несвободными корпусами (например, British National Corpus).
import nltk
from nltk.corpus import brown
table = nltk.FreqDist(t for w, t in brown.tagged_words() if w.lower() == 'table')
print(table.most_common())
[('NN', 147), ('NN-TL', 50), ('VB', 1)]
Вам нужна часть речи [пометки] (http://www.nltk.org/book/ch05.html). – Vidul
Wordnet имеет частоту для каждого * смысла * слова (например, «таблица»). Но это не обновлялось с 2003 года (насколько я помню). Лучший вариант - загрузить Google n-граммы и пометить POS в этом наборе данных. –
Как вы собираетесь использовать POS-тег для 5-словных ngrams? Эта идея не является стартером. Но google предоставляет [ngram files] (http://storage.googleapis.com/books/ngrams/books/datasetsv2.html), классифицированные по POS первого слова, так что это будет способ получить обширный счет. Если у вас есть дисковое пространство и вам действительно нужно перебросить столько данных. – alexis