Генерация допустимых слов из строки - PullRequest
0 голосов
/ 23 мая 2019

Из-за некоторых технических проблем все пробелы во всех предложениях удалены. (кроме полных остановок)

mystring='thisisonlyatest. andhereisanothersentense'

Есть ли в python способ получить читабельный вывод, подобный этому ...

«Это всего лишь тест. А вот и другое предложение».

1 Ответ

1 голос
/ 23 мая 2019

Если у вас есть список допустимых распространенных слов (их можно найти в Интернете для разных языков), вы можете получить все префиксы, проверить, являются ли они допустимым словом, и рекурсивно повторить с остальной частью предложения. Используйте памятку для предотвращения избыточных вычислений с одинаковыми суффиксами.

Вот пример на Python. Аннотация lru_cache добавляет памятку в функцию, так что предложение для каждого суффикса вычисляется только один раз, независимо от того, как была разбита первая часть. Обратите внимание, что words является set для поиска O (1). A Prefix-Tree тоже будет работать очень хорошо.

words = {"this", "his", "is", "only", "a", "at", "ate", "test", 
         "and", "here", "her", "is", "an", "other", "another",
         "sent", "sentense", "tense", "and", "thousands", "more"}
max_len = max(map(len, words))

import functools
functools.lru_cache(None)
def find_sentences(text):
    if len(text) == 0:
        yield []
    else:
        for i in range(min(max_len, len(text)) + 1):
            prefix, suffix = text[:i], text[i:]
            if prefix in words:
                for rest in find_sentences(suffix):
                    yield [prefix] + rest

mystring = 'thisisonlyatest. andhereisanothersentense'
for text in mystring.split(". "):
    print(repr(text))
    for sentence in find_sentences(text):
        print(sentence)

Это даст вам список допустимых (но, возможно, бессмысленных) способов разбить предложение на слова. Их может быть достаточно мало, так что вы можете выбрать правильный вручную; в противном случае вам может понадобиться добавить еще один шаг постобработки, например, использование анализа части речи с надлежащей структурой НЛП.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...