2015-11-09 2 views
0

Я пытаюсь использовать Лемматизатор NLTK WordNet в твитах.NLTK WordNet Lemmatizer - Как удалить неизвестные слова?

Я хотел бы удалить все слова, которые не найдены в WordNet (твиттер-ручки и т. Д.), Но нет обратной связи с WordNetLemmatizer.lemmatize(). Он просто возвращает слово без изменений, если он не может его найти.

Есть ли способ проверить, найдено ли слово в WordNet или нет?

В качестве альтернативы есть лучший способ удалить что-либо, кроме «правильных английских слов» из строки?

ответ

2

Вы можете проверить с помощью wordnet.synsets(token). Обязательно иметь дело с пунктуацией, а затем просто проверьте, находится ли она в списке. Вот пример:

from nltk.tokenize import WordPunctTokenizer 
from nltk.corpus import wordnet 

my_list_of_strings = [] # populate list before using 

wpt = WordPunctTokenizer() 
only_recognized_words = [] 

for s in my_list_of_strings: 
    tokens = wpt.tokenize(s) 
    if tokens: # check if empty string 
     for t in tokens: 
      if wordnet.synsets(t): 
       only_recognized_words.append(t) # only keep recognized words 

Но вы должны действительно создать некоторую собственную логику для обработки данных Twitter, конкретные обработки хэш-тегов, имена пользователей, @ ответы, ссылки, ретвиты и т.д. Есть много работ со стратегиями черпают из ,

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