如何在python/Django中找出给定URL的摘要文本?

Ram*_*ttu 16 python django

如何找出给定URL的摘要文本?

概括文本是什么意思?

默克4.11亿美元先灵葆雅竞标寻求科学

链接描述

默克公司(Merck&Co.)以411亿美元收购先灵葆雅公司(Schering-Plough Corp.),为血栓,感染和精神分裂症添加实验药物,并允许这些公司加快生物技术药物的研究.

对于上面的URL,以下三行是摘要文本.
我们通常通过获取该页面获得的URL的简短2到3行描述,检查内容,然后从该html标记中找出简短描述.

有没有什么好的算法可以做到这一点?(或)
python/django中是否有任何好的库可以做到这一点?

Tri*_*ick 22

我有同样的需求和狐猴,虽然它具有摘要功能,但我发现它有些无法使用.在周末我使用nltk在python中编写一个汇总模块:https://github.com/thavelick/summarize

我在这里从Java库Classifier4J中获取算法:http://classifier4j.sourceforge.net/但是尽可能使用nltk和python.

这是基本用法:

>>> import summarize
Run Code Online (Sandbox Code Playgroud)

SimpleSummarizer(当前唯一的摘要)通过使用最常用单词的句子来进行摘要:

>>> ss = summarize.SimpleSummarizer()
>>> input = "NLTK is a python library for working human-written text. Summarize is a package that uses NLTK to create summaries."
>>> ss.summarize(input, 1)
'NLTK is a python library for working human-written text.'
Run Code Online (Sandbox Code Playgroud)

您可以根据需要在摘要中指定任意数量的sentenecs.

>>> input = "NLTK is a python library for working human-written text. Summarize is a package that uses NLTK to create summaries. A Summariser is really cool. I don't think there are any other python summarisers."
>>> ss.summarize(input, 2)
"NLTK is a python library for working human-written text.  I don't think there are any other python summarisers."
Run Code Online (Sandbox Code Playgroud)

与Classifier4J中的原始算法不同,此摘要生成器与句点以外的标点符号一起正常工作:

>>> input = "NLTK is a python library for working human-written text! Summarize is a package that uses NLTK to create summaries."
>>> ss.summarize(input, 1)
'NLTK is a python library for working human-written text!'
Run Code Online (Sandbox Code Playgroud)

UPDATE

我现在(终于!)在Apache 2.0许可证下发布了这个许可证,与nltk相同的许可证,并将模块放在github上(见上文).欢迎任何贡献或建议.


Jar*_*die 4

文本摘要是一个相当复杂的话题。如果您确实需要这样做,您可能希望看看像 Lemur ( http://www.lemurproject.org/ ) 这样的项目。

然而,我怀疑你真正想要的是这里的文本摘要。如果您知道文档的哪个部分包含正文文本,请使用 HTML 解析库(如BeautifulSoup )找到它,然后去掉 HTML;取第一个句子或前 N 个字符(最适合的),然后使用它。有点像穷表弟的抽象生成器:-)