2015-09-05 5 views
0

Учитывая одно слово, такое как «таблица», я хочу определить, что он наиболее часто используется, поскольку его наиболее распространенное использование - это существительное, глагол или прилагательное. Я хочу сделать это в python. Есть ли что-то еще помимо wordnet? Я не люблю wordnet. Или, если я использую wordnet, как бы я сделал это именно с этим?Идентифицировать слово как существительное, глагол или прилагательное

+0

Вам нужна часть речи [пометки] (http://www.nltk.org/book/ch05.html). – Vidul

+0

Wordnet имеет частоту для каждого * смысла * слова (например, «таблица»). Но это не обновлялось с 2003 года (насколько я помню). Лучший вариант - загрузить Google n-граммы и пометить POS в этом наборе данных. –

+0

Как вы собираетесь использовать POS-тег для 5-словных ngrams? Эта идея не является стартером. Но google предоставляет [ngram files] (http://storage.googleapis.com/books/ngrams/books/datasetsv2.html), классифицированные по POS первого слова, так что это будет способ получить обширный счет. Если у вас есть дисковое пространство и вам действительно нужно перебросить столько данных. – alexis

ответ

5
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')] 
+0

Что делать, если это слово вне контекста. Просто слово «таблица» и его наиболее распространенное использование, будь то его существительное, глагол и т. Д. –

+2

Что вы подразумеваете под «вне контекста»? Именно контекст делает это определение (часть речи) возможным. – Vidul

+0

Любое существительное может быть указано. – stark

4

Если у вас есть слово из контекста и хотите знать его наиболее общее пользование, вы можете взглянуть на чужой таблице частот (например, 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)] 

 Смежные вопросы

  • Нет связанных вопросов^_^