Удаление неанглийских слов из предложения в python

Я написал код, который отправляет запросы в Google и возвращает результаты. Я извлекаю фрагменты (резюме) из этих результатов для дальнейшей обработки. Однако иногда в этих фрагментах есть неанглийские слова, которые мне не нужны. Например:

/\u02b0w\u025bn w\u025bn unstressed \u02b0w\u0259n w\u0259n/ 

Мне нужно только "безударное" слово в этом предложении. Как я могу это сделать? Благодарность


person Hossein    schedule 27.10.2010    source источник
comment
Этот блок текста не имеет никакого смысла.   -  person Glenn Maynard    schedule 27.10.2010
comment
Вам нужны настоящие английские словарные слова или просто слова, содержащие только символы ASCII (даже если они, скажем, являются именами собственными, такими как имя или место, или английские слова с ошибками)?   -  person detly    schedule 27.10.2010
comment
@Glenn: это слова в формате юникода   -  person Hossein    schedule 27.10.2010
comment
@ delty: символы ASCII хороши. но я пытался закодировать их в ascii, не получилось...   -  person Hossein    schedule 27.10.2010
comment
@detly: английские слова могут содержать символы, отличные от ASCII (piñata, étude); вы, вероятно, имеете в виду нелатинские символы.   -  person Glenn Maynard    schedule 27.10.2010
comment
@Hossein: их нет в Unicode, они экранированы и нечитаемы. Вставьте текст Unicode напрямую, чтобы он был читабельным.   -  person Glenn Maynard    schedule 27.10.2010
comment
@detly: На самом деле его текст - после расшифровки, хех - содержит латинские буквы в других словах (wɛn), так что это тоже не сработает. Единственным вариантом являются инструменты эвристического анализа, и они, вероятно, никогда не будут очень надежными...   -  person Glenn Maynard    schedule 27.10.2010
comment
@Hossein, может быть полезно представить некоторую информацию о цели, которую вы пытаетесь достичь. Вам нужен идеальный подход или вы можете жить с оптимальными результатами. Или даже с меньшей?   -  person bastijn    schedule 27.10.2010
comment
@Glenn Maynard - не-ASCII в английских словах? Пожалуйста, я австралиец — у нас здесь даже нет буквы «q».   -  person detly    schedule 27.10.2010


Ответы (3)


PyEnchant может быть простым вариантом для вас. Я не знаю о его скорости, но вы можете делать такие вещи, как:

>>> import enchant
>>> d = enchant.Dict("en_US")
>>> d.check("Hello")
True
>>> d.check("Helo")
False
>>>

Учебник находится здесь, в нем также есть варианты возврата предложений который вы можете снова для другого запроса или что-то. Кроме того, вы можете проверить, находится ли ваш результат на латыни-1 (is_utf8() существует, не знаю, есть ли is_latin-1(), возможно, используйте что-то вроде Enca, которая определяет кодировку текстовых файлов на основе знания их языка.)

person bastijn    schedule 27.10.2010
comment
позволит ли это также использовать пунктуацию и специальные символы? Идея состоит в том, чтобы проверить неанглийские тексты - person MANU; 03.12.2016

Вы можете сравнить полученные слова со словарем английских слов, например /usr/share/dict/words в системе BSD.

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

person knutin    schedule 27.10.2010
comment
Если оставить в стороне тот факт, что результаты Google поступают из Интернета и поэтому в лучшем случае сомнительны с грамматической точки зрения, вам все равно придется заниматься поиском корней. Файл без слов не будет содержать все перегибы каждого слова. - person Glenn Maynard; 27.10.2010
comment
Вопрос в том, нужно ли это. Нужен ли нам 100% точный результат или можно жить с оптимальным. Использование словаря + стемминга может быть не идеальным, но вполне может быть достаточно хорошим для TS. - person bastijn; 27.10.2010

Вы можете использовать PyWordNet. Это интерфейс Python для WordNet. Просто разбейте предложение на пробелы и проверьте каждое слово, есть ли оно в словаре.

person Klark    schedule 27.10.2010