【问题标题】:How to fix 'ValueError("input must have more than one sentence")' Error如何修复'ValueError(“输入必须不止一个句子”)'错误
【发布时间】:2019-02-07 08:15:14
【问题描述】:

我正在编写一个脚本,它需要一个网站 url 并使用漂亮的汤下载它。然后它使用 gensim.summarization 来总结文本,但我一直收到 ValueError("input must have more than one sentence") 即使文本有多个句子。脚本的第一部分可以下载文本,但我无法让第二部分总结文本。

import bs4 as bs
import urllib.request
from gensim.summarization import summarize
from gensim.summarization.textcleaner import split_sentences

#===========================================

print("(Insert URL)")
url = input()
sauce = urllib.request.urlopen(url).read()
soup = bs.BeautifulSoup(sauce,'lxml')

#===========================================

print(soup.title.string)
with open (soup.title.string + '.txt', 'wb') as file:
    for paragraph in soup.find_all('p'):
        text = paragraph.text.replace('.', '.\n')
        text = split_sentences(text)
        text = summarize(str(text))
        text = text.encode('utf-8', 'ignore')

#===========================================

        file.write(text+'\n\n'.encode('utf-8'))

脚本在 .py 文件所在的任何文件夹中运行后,它应该创建一个包含摘要文本的 .txt 文件

【问题讨论】:

  • 我只能假设您的 'soup.find_all('p')' 中的 1 个(或可能更多)元素在迭代中的某个时刻将 'text' 标识为单个句子。当“文本”是 1 个句子时让您的循环跳过,或者通过打印句子来识别脚本在什么时候中断,以确定它引发错误的具体点,看看如何修复它。
  • 您是否也考虑过“.”的缩写和其他注意事项,以及您的替换?在 Mr.、Mrs.、Jr.、$5.00 等之后可能会出现一段时间,您也将在这些点添加新行。然后还有其他标点符号表示句子的结尾“?”,“!”

标签: python-3.x beautifulsoup gensim


【解决方案1】:

在将文本传递给summarize() 之前不应使用split_sentences(),因为summarize() 将字符串(包含多个句子)作为输入。

在您的代码中,您首先将文本转换为句子列表(使用split_sentences()),然后将其转换回字符串(使用str())。其结果是一个类似"['First sentence', 'Second sentence']" 的字符串。将此传递给summarize() 是没有意义的。

相反,您应该简单地将原始文本作为输入传递:

text = summarize(text)

【讨论】:

  • 我尝试删除 text = split_sentences(text) 行并总结原始输入,但是在脚本 ValueError("input must have more than one sentence" )
  • 好吧,奇怪。也许您可以尝试打印split_sentences(text) 以查看 gensim 如何将您的文本拆分为句子?或者你有一个段落只有一个句子?
  • 无论我使用哪个网站,它似乎都只给我一句话,这让我认为这是gensim本身的问题,而不是我的代码
  • @TheBluesBand 替换点 '.' 不是问题。使用新行 char '\n' ?
猜你喜欢
  • 2019-12-19
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 2017-12-26
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多