如何解决'ValueError(“输入必须包含多个句子”)'错误

时间:2019-02-07 08:15:14

标签: python-3.x beautifulsoup gensim

我正在编写一个脚本,该脚本使用一个网站URL并使用漂亮的汤下载它。然后,它使用gensim.summarization来总结文本,但是我一直认为ValueError(“输入必须有多个句子”)甚至认为文本有多个句子。脚本的第一部分可以下载文本,但是我无法获得第二部分来总结文本。

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文件

1 个答案:

答案 0 :(得分:1)

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

在代码中,您首先将文本变成句子列表(使用split_sentences()),然后将其转换回字符串(使用str())。结果是像"['First sentence', 'Second sentence']"这样的字符串。将其传递给summarize()没有任何意义。

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

text = summarize(text)