代码之家  ›  专栏  ›  技术社区  ›  Rama Vadakattu

如何在python/django中找到给定url的摘要文本?[关闭]

  •  16
  • Rama Vadakattu  · 技术社区  · 17 年前

    如何找到给定url的摘要文本?

    我所说的摘要是什么意思?

    Merck $41.1 Billion Schering-Plough Bid Seeks Science

    链接说明

    默克公司(Merck&Co.)以411亿美元收购先灵葆雅公司(Schering Plough Corp.),增加了治疗血块、感染和精神分裂症的实验药物,并使这些公司能够加快生物技术药物的研究。

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

    有什么好的算法可以做到这一点吗?(或)
    python/django中有什么好的库可以做到这一点吗?

    4 回复  |  直到 13 年前
        1
  •  22
  •   Tristan Havelick    13 年前

    我也有同样的需求,狐猴虽然有总结能力,但我发现它有缺陷,以至于无法使用。上周末,我用nltk用python编写了一个总结模块: https://github.com/thavelick/summarize

    我从Java库分类4J中提取了算法: http://classifier4j.sourceforge.net/ 但尽可能使用nltk和python。

    以下是基本用法:

    >>> import summarize
    

    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.'
    

    您可以在摘要中指定任意数量的句子。

    >>> 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上(见上文)。欢迎提出任何意见或建议。

        2
  •  4
  •   Jarret Hardie    17 年前

    摘要是一个相当复杂的课题。如果你需要用一种严肃的方式来做这件事,你可以看看像狐猴这样的项目( http://www.lemurproject.org/ )

    不过,我想你真正想要的是一个文本摘要。如果您知道文档的哪个部分包含正文文本,请使用HTML解析库查找它,如 BeautifulSoup ,然后去掉html;取第一个句子或前n个字符(最适合),然后使用它。有点像可怜表兄的抽象生成器:-)

        3
  •  4
  •   theycallmemorty    17 年前

    查看 Natural Language Toolkit . 如果要进行任何文本处理,它是一个非常有用的python库。

    然后看 this paper 作者:HP Luhn(1958)。它描述了一种生成文本摘要的简单而有效的方法。

    使用nltk.probability.freqdist对象跟踪单词在文本中出现的频率,然后根据出现频率最高的单词的数量对句子进行评分。然后选择得分最高的句子,然后,你就得到了文档的摘要。

    我怀疑nltk应该有一种从web加载文档的方法,并且可以让所有的html标记都不受影响。我自己也没有做过这种事,但是如果你查阅语料库读者,你可能会发现一些有用的东西。

        4
  •  -3
  •   Bartek    17 年前

    在这种情况下,您最好使用像beautifulsoups这样的html解析库( http://www.crummy.com/software/BeautifulSoup/ )

    从那里,您可以获取例如所有页面 p 标签:

    导入urllib2

    从美组进口美组

    page=urllib2.urlopen(“ http://www.bloomberg.com/apps/newspid=20601103&sid=a8p0FQHnw.Yo&refer=us “”

    汤=美容组(第页)

    汤。芬德尔(“P”)

    然后,做一些解析。它完全取决于页面,因为每个站点的结构都不同。你可以像他们一样在一些网站上获得幸运,你只需寻找 磷 标签上有id摘要,而其他人(比如blooberg)可能需要更多的玩乐。