2016-12-22 7 views
3

Я выполняю упражнение по очистке данных на python, а текст, который я очищаю, содержит итальянские слова, которые я хотел бы удалить. Я искал в Интернете, смогу ли я сделать это на Python с помощью набора инструментов, такого как nltk.Удаление неанглийских слов из текста с помощью Python

В приведенном примере текст:

"Io andiamo to the beach with my amico." 

Я хотел бы остаться с:

"to the beach with my" 

Кто-нибудь знает способ, каким образом это можно сделать? Любая помощь будет высоко оценена.

ответ

2

Существует хорошая библиотека Python под названием Enchant. Он может проверить, является ли слово английским.

Из своей домашней странице:

>>> import enchant 
>>> d = enchant.Dict("en_US") 
>>> d.check("Hello") 
True 
>>> d.check("Helo") 
False 
>>> d.suggest("Helo") 
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"] 

Так что вы могли бы сделать что-то вроде:

string = "Io andiamo to the beach with my amico." 
english_words = [] 
for word in string.split(): 
    if d.check(word): 
     english_words.append(word) 
print " ".join(english_words) 

Примечание: маленькие слова трудно определить язык, в том, что многие малые слова могут быть на разных языках , поэтому результатом вышеуказанного кода является:

Io to the beach with my 

Где вы хотели, чтобы Io бы были исключены

+0

Большое вам спасибо за помощь! Это сработало :) –

4

Вы можете использовать words корпус из NLTK:

import nltk 
words = set(nltk.corpus.words.words()) 

sent = "Io andiamo to the beach with my amico." 
" ".join(w for w in nltk.wordpunct_tokenize(sent) \ 
     if w.lower() in words or not w.isalpha()) 
# 'Io to the beach with my' 

К сожалению, Io случается английское слово. В общем, может быть трудно решить, является ли слово английским или нет.

+0

Thats точно, что я искал, спасибо! –

+0

Отредактировано для сохранения не-слов (знаки препинания, числа и т. Д.) – DyZ