18

我发现自己必须一直学习新事物。我一直在想办法加快学习新学科的过程。我认为如果我可以编写一个程序来解析维基百科文章并删除除最有价值的信息之外的所有内容,那可能会很简洁。

我首先阅读了关于PDF的 Wikipedia 文章并提取了前 100 个句子。我根据我认为它的价值给每个句子打分。我最终创建了一个以下格式的文件:

<sentence>
<value>
<sentence>
<value>
etc.

然后我解析了这个文件并试图找到将每个句子与我给它的值相关联的各种函数。我刚刚开始学习机器学习和统计等等,所以我在这里做了很多摸索。这是我的最新尝试: https ://github.com/JesseAldridge/Wikipedia-Summarizer/blob/master/plot_sentences.py 。

我尝试了一堆似乎根本没有产生任何相关性的东西——平均字长、文章中的位置等。几乎唯一能产生任何有用关系的东西就是字符串的长度(更具体地说,计算小写字母“e”的数量似乎效果最好)。但这似乎有点蹩脚,因为很明显更长的句子更有可能包含有用的信息。

有一次,我以为我找到了一些有趣的函数,但是当我尝试删除异常值(仅计算内部四分位数)时,结果发现它们产生的结果更差,然后只为每个句子返回 0。这让我想知道我可能做错了多少其他事情......我也想知道这是否是解决这个问题的好方法。

你认为我在正确的轨道上吗?或者这只是一个傻瓜的差事?链接代码中是否存在明显的缺陷?有谁知道解决总结维基百科文章问题的更好方法?我宁愿有一个快速而肮脏的解决方案,而不是需要很长时间才能完成的完美解决方案。也欢迎任何一般性建议。

4

2 回答 2

14

考虑到您的问题更多地涉及研究活动而不是编程问题,您可能应该查看科学文献。在这里,您将找到许多算法的已发布详细信息,这些算法完全符合您的要求。谷歌搜索“关键字摘要”发现以下内容:

基于聚类系数和传递性分析的单文档摘要

问答式电子学习系统的多文档摘要

智能电子邮件:用 AI 帮助用户

如果您阅读以上内容,然后按照其中包含的参考资料进行操作,您会发现大量信息。当然足以构建一个功能性应用程序。

于 2012-01-01T07:32:44.977 回答
1

就我的两分钱...

每当我在 Wikipedia 上浏览新主题时,我通常会执行“广度优先”搜索;我拒绝继续讨论另一个主题,直到我扫描了页面连接到的每个链接(这引入了一个我还不熟悉的主题)。我阅读了每一段的第一句话,如果我在那篇文章中看到与原始主题相关的内容,我会重复这个过程。

如果我要为维基百科“总结器”设计界面,我会

  1. 始终打印整个介绍性段落。

  2. 对于文章的其余部分,打印任何包含链接的句子。

    2a。将任何逗号分隔的链接列表打印为项目符号列表。

  3. 如果文章的链接已“展开”,则打印该文章的第一段。

  4. 如果该介绍性段落被扩展,请重复带有链接的句子列表。

这个过程可以无限重复。

我的意思是总结维基百科的文章与总结杂志上的文章或博客上的帖子不同。爬行是通过维基百科快速学习介绍性概念的重要部分,我觉得这是最好的。通常,文章的下半部分是citation needed标签开始弹出的地方,但任何给定文章的前半部分都被认为是社区提供的知识。

于 2012-01-01T20:07:33.507 回答