【发布时间】: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