我发现自己总是需要学习新东西。我一直在思考如何加速学习新学科的过程。我觉得如果能编写一个程序来解析维基百科文章,去除所有非关键信息,保留最有价值的内容,会很有趣。
我首先选择了关于PDF的维基百科文章,提取了前100个句子。我根据每个句子的重要性给它们打分。最后,我创建了一个按照以下格式的文件:
<sentence><value><sentence><value>等。
然后,我解析了这个文件,尝试找到各种函数,这些函数可以将每个句子与我给定的分值相关联。我刚开始学习机器学习和统计学之类的东西,所以这里我做了很多摸索。这是我的最新尝试:https://github.com/JesseAldridge/Wikipedia-Summarizer/blob/master/plot_sentences.py。
我尝试了许多方法,但似乎都没有产生什么相关性——比如平均词长、文章中的位置等。几乎唯一产生有用关系的是字符串的长度(更具体地说,计算小写字母’e’的数量似乎效果最好)。但这似乎有点无趣,因为很明显,较长的句子更可能包含有用的信息。
有一次我以为我找到了一些有趣的函数,但当我尝试去除异常值(只计算内四分位数)时,结果却比每个句子都返回0还要差。这让我开始思考我可能还做了多少其他错误的事情…我也开始怀疑这是否是解决这个问题的正确方法。
你认为我走在正确的轨道上吗?还是这只是一个徒劳的尝试?链接的代码中有没有明显的缺陷?有没有人知道更好的方法来总结维基百科文章?我宁愿有一个快速而粗糙的解决方案,也不愿意花很长时间来完善一个完美的解决方案。任何一般的建议也欢迎。
回答:
考虑到你的问题更多地与研究活动相关,而不是编程问题,你可能应该查阅科学文献。在那里你会找到许多算法的详细信息,这些算法正是你想要的。谷歌搜索“关键词摘要”可以找到以下内容:
如果你阅读了上述内容,然后跟踪它们所包含的参考文献,你会发现大量的信息。肯定足够构建一个功能性应用了。