Удаление неанглийских слов из текста с помощью Python

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

Например, с некоторым текстом:

"Io andiamo to the beach with my amico."

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

"to the beach with my" 

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

Ответ 1

Вы можете использовать words corpus из 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'

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

Ответ 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 был исключен

Ответ 3

Как удалить не английские слова из CSV файла с помощью Python?

Ответ 4

Я использовал точно такой же код, но он не исключает неанглийское слово. Выход

Io andiamo на пляж с моим amico.

Процесс завершен с кодом выхода 0