распечатка количества предложений в текстовом файле - PullRequest
0 голосов
/ 18 ноября 2018

так что я действительно не вижу, что я делаю неправильно, количество предложений продолжает говорить, что оно равно 0, однако я пытаюсь подсчитать количество предложений / остановок с помощью text.count ('.')

Есть ли в моем коде что-нибудь, что могло бы вывести это "0"?

Спасибо

def countSentences(fileName) :
    """This is a function to count the number
    of sentences in a given text file"""
    f = open(fileName, 'r')
    text = f.read()
    text = text.split()
    print("Total sentences : " + str(text.count('.')))

    f.close()

в Main () у меня есть

print(countSentences('phrases.txt'))

, который переходит в файл с многочисленными предложениями.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Хорошо, посмотрим.Исправляя ваш код, чтобы посчитать '.'это легко сделать.Это будет выглядеть так:

  with open('example_file.txt', 'rb') as f:
      text = str(f.read())
      num_sentences = str(text.count('.'))
      print("Number of sentences found: {}".format(num_sentences))

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

Подумайте о файле example_file.txt со следующим внутри:

Здравствуйте, это пример файла.Я рад, что вы нашли меня.Время сейчас 14:00. Надеюсь, у вас отличный день.

Ваш код ответит 5, но правильный ответ 4.

Следующий код показывает ошибку икак это можно сделать правильно, используя spacy .

with open('example_file.txt', 'rb') as f:
    text = str(f.read())
    num_sentences = str(text.count('.'))
    print("Number of sentences found: {}".format(num_sentences))
    import spacy
    nlp = spacy.load('en')
    doc = nlp(text)
    print("Actual number of sentences: {}".format(len(list(doc.sents))))

Надеюсь, это поможет:)

0 голосов
/ 18 ноября 2018

Из вашего кода будет видно, что переменная text является массивом строк, поэтому счетчик не найдет строк, которые просто .

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

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