Удаление неанглийских слов из текста с помощью 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