Есть ли простой способ генерировать вероятный список слов из несложенного предложения в python?

У меня есть текст:

s="Imageclassificationmethodscan beroughlydividedinto two broad families of approaches:" 

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

2 Solutions collect form web for “Есть ли простой способ генерировать вероятный список слов из несложенного предложения в python?”

Жадный подход с использованием trie

Попробуйте это с помощью Biopython ( pip install biopython ):

 from Bio import trie import string def get_trie(dictfile='/usr/share/dict/american-english'): tr = trie.trie() with open(dictfile) as f: for line in f: word = line.rstrip() try: word = word.encode(encoding='ascii', errors='ignore') tr[word] = len(word) assert tr.has_key(word), "Missing %s" % word except UnicodeDecodeError: pass return tr def get_trie_word(tr, s): for end in reversed(range(len(s))): word = s[:end + 1] if tr.has_key(word): return word, s[end + 1: ] return None, s def main(s): tr = get_trie() while s: word, s = get_trie_word(tr, s) print word if __name__ == '__main__': s = "Imageclassificationmethodscan beroughlydividedinto two broad families of approaches:" s = s.strip(string.punctuation) s = s.replace(" ", '') s = s.lower() main(s) 

Результаты

 >>> if __name__ == '__main__': ... s = "Imageclassificationmethodscan beroughlydividedinto two broad families of approaches:" ... s = s.strip(string.punctuation) ... s = s.replace(" ", '') ... s = s.lower() ... main(s) ... image classification methods can be roughly divided into two broad families of approaches 

Предостережения

На английском языке есть дегенеративные случаи, для которых это не сработает. Вам нужно использовать backtracking, чтобы справиться с ними, но это должно вас начать.

Обязательный тест

 >>> main("expertsexchange") experts exchange 

Это своего рода проблема, которая часто встречается в азиатских НЛП. Если у вас есть словарь, вы можете использовать этот http://code.google.com/p/mini-segmenter/ (Отказ от ответственности: я написал его, надеюсь, вы не против).

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

  • Минимальное редактирование дистанционной реконструкции
  • word_tokenize ТипError: ожидаемая строка или буфер
  • Как извлечь куски из BIO chunked предложений? - python
  • Как вычислить подобие косинуса с учетом 2 строк предложения? - Python
  • Автоматически определять естественный язык страницы веб-сайта с учетом его URL-адреса
  • Что относительно простой способ определить вероятность того, что предложение на английском языке?
  • Обнаружение иностранных слов
  • Самая длинная общая подстрока без резки слова-питона
  •  
    Interesting Posts for Van-Lav

    Обновления pyOpenSSL и pandas с использованием «pip» завершаются с «TypeError: resolve () получили неожиданный аргумент ключевого слова« replace_conflicting »»

    Что означает `if name ==" __main __ "` значение в Python?

    Вывод данных из всех столбцов в кадре данных в пандах

    Почему это определение словаря вызывает синтаксическую ошибку?

    Я пытаюсь сделать малиновую пи-камеру работать с opencv

    Как получить Python для изящного форматирования Нет и несуществующие поля

    Используйте python для циклического перехода по двум спискам, используя один в качестве индекса в список списков, а другой как значение для добавления

    Как я могу защитить свой идентификатор доступа AWS и секретный ключ в моем приложении python

    Django 1.4 – bulk_create со списком

    как указать, какой сценарий салата запускается

    Можно ли отменить поиск позиции индекса для itersorted в PyTables?

    Python Dictionary DataStructure, какой метод d или d.get ()?

    Вычислить быстрый бревенчатый фундамент 2 потолка в python

    уведомления о замене couchdb-python

    постоянное обновление всплывающей подсказки

    Python - лучший язык программирования в мире.