2015-03-17 3 views
2

Я ищу подходящее решение этого вопроса. Этот вопрос задавался много раз, и я не нашел ни одного подходящего ответа. мне нужно использовать корпус в NLTK обнаружить слово является ли английское словоКак определить, существует ли слово на английском языке, используя nltk

Я попытался сделать:

wordnet.synsets(word) 

Это оленья кожа слово для многих общих слов. Использование списка слов на английском языке и выполнение поиска в файле не является вариантом. Использование чаров - тоже не вариант. Если есть другая библиотека, которая может сделать то же самое, предоставьте использование api. Если нет, предоставьте корпус в nltk, который имеет все слова на английском языке.

ответ

8

NLTK includes some corpora Это не более, чем словари. Words Corpus - это файл/usr/share/dict/words от Unix, , используемый некоторыми контролерами орфографии. Мы можем использовать его, чтобы найти необычные или неправильно написанное слово в текстовом корпусе, как показано на:

def unusual_words(text): 
    text_vocab = set(w.lower() for w in text.split() if w.isalpha()) 
    english_vocab = set(w.lower() for w in nltk.corpus.words.words()) 
    unusual = text_vocab - english_vocab 
    return sorted(unusual) 

И в этом случае вы можете проверить член корабль вашего слова с english_vocab.

>>> import nltk 
>>> english_vocab = set(w.lower() for w in nltk.corpus.words.words()) 
>>> 'a' in english_vocab 
True 
>>> 'this' in english_vocab 
True 
>>> 'nothing' in english_vocab 
True 
>>> 'nothingg' in english_vocab 
False 
>>> 'corpus' in english_vocab 
True 
>>> 'Terminology'.lower() in english_vocab 
True 
>>> 'sorted' in english_vocab 
True 
+0

ли вы знаете способ сделать это быстрее? Это занимает много времени для каждой проверки. –

+0

@NicoCoallier Используете ли вы метод 'set'? – Kasramvd

+0

Я пытаюсь определить английское предложение .. http://stackoverflow.com/questions/43922087/define-if-post-extract-from-a-bilingual-facebook-page-are-in-english-using-pytho –

0

Я пробовал вышеуказанный подход, но для многих слов, которые должны существовать, поэтому я попробовал wordnet. Я думаю, что это имеет более полный vacabulary.-

from nltk.corpus import wordnet if wordnet.synsets(word): #Do something else: #Do some otherthing

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