Предложенный код разделения предложения не работает для одного предложения (кто-то может воспроизвести его или объяснить?) - PullRequest
0 голосов
/ 15 мая 2019

Просто продолжение кода, предоставленного TennisVisuals в этом обсуждении: Разделение Python текста на предложения Я пытался разобрать следующий абзац в два предложения, но код (см. Ссылку по ссылке) не сделалРабота.Мне было интересно, может ли кто-нибудь еще воспроизвести ошибку.

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

TwoSentencesParagraph = "Министр должен подготовить ежегодный отчет о реализации конкретных программ. Отчет включен в ежегодный отчет руководства Министерства по делам социалистов и солидарности."Код приведен в обсуждении Python разбивает текст на предложения .

Он содержит следующие строки (среди нескольких других):

def find_sentences(paragraph):
    end = True
    sentences = []
    while end > -1:
        end = find_sentence_end(paragraph)
        if end > -1:
            sentences.append(paragraph[end:].strip())
            paragraph = paragraph[:end]
    sentences.append(paragraph)
    sentences.reverse()
    return sentences

1 Ответ

0 голосов
/ 15 мая 2019

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

код, указанный в ответе:

import nltk.data

tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
fp = open("test.txt")
data = fp.read()
print '\n-----\n'.join(tokenizer.tokenize(data))

Код, который я запустил и который успешно завершился:

import nltk.data
nltk.download('punkt')

tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
fp = open("test.txt")
data = fp.read()
print ('\n-----\n'.join(tokenizer.tokenize(data)))

Вывод программы:

The Minister must prepare an annual report on the implementation of specific 
programs.
-----
The report is included in the annual management report of the Ministere de l’Emploi 
et de la Solidarite sociale.

Я хотел бы отметить, что для этого кода ввод должен быть в файле .txt, а вывод - в консоль.

Если я что-то пропустил или какие-либо из моих предположений были неверны, пожалуйста, дайте мне знать, чтобы я мог попытаться это исправить. Добавление дополнительной информации к вашему ответу и меньше полагаться на ссылки, вероятно, поможет вам получить более точные и актуальные ответы. Например, существует много причин, по которым программа может потерпеть неудачу, поэтому объяснение и / или пример выходных данных и ожидаемый результат могут иметь большое значение.

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