如何查找给定URL的摘要文本?
我所说的摘要文本是什么意思?
默克411亿美元先灵-Plough出价寻求科学
链接分解
默克公司( Merck &Co.)以411亿美元收购先令公司( Schering-Plough Corp. .),增加了治疗血块、感染和精神分裂症的实验药物,使这些公司能够加快生物技术药物的研发速度。
对于上面的URL,下面三行是摘要文本。
URL的简短的2到3行描述,我们通常是通过获取该页面来获得的,然后检查内容,从那个html标记中找出简短的描述。
有什么好的算法可以做到这一点吗?(或)
python/django中是否有这样做的好库?
发布于 2010-02-22 00:22:20
我也有同样的需求,狐猴,虽然它有总结功能,但我发现它的buggy已经到了无法使用的地步。上周末,我使用nltk在python:https://github.com/thavelick/summarize中编写了一个总结模块。
我在这里使用了Java库Classifier4J中的算法:http://classifier4j.sourceforge.net/,但在可能的情况下使用了nltk和python。
以下是基本用法:
>>> import summarizeSimpleSummarizer (目前是唯一的摘要器)通过使用最频繁的单词的句子来进行摘要:
>>> 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.'您可以根据需要在摘要中指定任意数量的句子。
>>> 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."与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!'更新
我现在(终于!)在Apache2.0许可证下发布了与nltk相同的许可证,并将模块放在github上(参见上文)。欢迎任何意见或建议。
发布于 2009-03-09 15:54:12
摘要是一个相当复杂的话题。如果您需要认真地这样做,您可能希望查看像Lemur (http://www.lemurproject.org/)这样的项目。
然而,我怀疑你真正想要的是这里的文本摘要。如果您知道文档的哪一部分包含正文文本,请使用像BeautifulSoup这样的HTML解析库来定位它,然后去掉HTML;取第一句或第一个N个字符(这是最适合的),然后使用它。有点可怜的表弟的抽象生成器:-)
发布于 2009-03-09 16:10:02
看看自然语言工具包。如果您正在进行任何文本处理,这是一个非常有用的python库。
然后看看本论文由惠普卢恩(1958年)。它描述了一种简单而有效的文本摘要生成方法。
使用nltk.probability.FreqDist对象跟踪单词在文本中出现的频率,然后根据其中最频繁出现的单词的数量对句子进行评分。然后选择得分最好的句子,瞧,你有文档的摘要。
我怀疑NLTK应该有一种从web加载文档并排除所有HTML标记的方法。我自己也没做过这种事,但是如果你查一下语料库的读者,你可能会发现一些有用的东西。
https://stackoverflow.com/questions/626754
复制相似问题