我正在编写一个脚本,该脚本使用一个网站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文件
答案 0 :(得分:1)
在将文本传递到split_sentences()
之前,请勿使用summarize()
,因为summarize()
采用字符串(包含多个句子)作为输入。
在代码中,您首先将文本变成句子列表(使用split_sentences()
),然后将其转换回字符串(使用str()
)。结果是像"['First sentence', 'Second sentence']"
这样的字符串。将其传递给summarize()
没有任何意义。
相反,您应该简单地将原始文本作为输入:
text = summarize(text)