这是问题所在。我有一堆带有段落和段落的大文本文件。每个段包含对少数人(名称)的引用,并记录一些主题(地点,对象)。
我如何挖掘这堆数据以组装一些分类库? ......一般来说,有两件事。
我不知道我在找什么,so I need a program来获取最常用的单词/多个单词(“Jacob Smith”或“bluewater inn”或“arrow”)。
然后知道关键字,我需要一个程序来帮助我搜索相关的段落,然后对结果进行排序和细化(手动手动)。
答案 0 :(得分:2)
你的问题有点开放:) 有可能,您会在UIMA framework中找到您想要进行的任何分析的模块:
非结构化信息管理应用程序是分析大量非结构化信息的软件系统,用于发现与最终用户相关的知识。示例UIM应用程序可以摄取纯文本并识别实体,例如人员,地点,组织;或关系,例如工作或定位。 UIMA由许多东西组成
UIMA使应用程序能够分解为组件,例如“语言识别”=> “语言特定分段”=> “句子边界检测”=> “实体检测(人/地名等)”。每个组件实现框架定义的接口,并通过XML描述符文件提供自描述元数据。框架管理这些组件以及它们之间的数据流。组件用Java或C ++编写;组件之间流动的数据旨在实现这些语言之间的有效映射。
您还可以找到Open Calais用于文本分析的有用API;根据您的文档堆的大小,它可能或多或少是合适的。
如果你想要它快速而又脏 - 创建一个倒置索引,它存储所有单词的位置(基本上是一个大的单词映射到它们出现的所有文件ID,这些文件中的段落,段落中的行等) 。同时索引元组,以便给定fileid和段落,您可以查找所有邻居。这将完成您所描述的内容,但需要进行相当多的调整才能获得有意义的相关性(一些关键字可以帮助您开始搜索:信息检索,TF-IDF,Pearson相关系数)。
答案 1 :(得分:1)
看起来你正在尝试创建一个索引?
我认为Learning Perl有关于在文本文件中查找单词频率的信息,因此这不是一个特别难的问题。
但你真的想知道“the”或“a”是最常用的词吗?
如果您正在寻找某种主题索引,那么您实际关注的词语可能会在列表中略微下降,与您不关心的词汇混合在一起。
你可以先从列表前面删除“停用词”来过滤你的结果,但没有什么会超过关联实际反映段落主题的关键词,而这需要上下文。
无论如何,我可能会离开基地,但你去了。 ;)
答案 2 :(得分:1)
你问的问题是你不知道你在找什么。如果你有一些你关心的加权术语列表,那么你就会处于良好的状态。
从语义上讲,问题是双重的:
假设您有一些能够满足您要求的内容,并生成了一个清晰的列表,其中列出了您的文本中出现的所有关键字。会有数千个这样的关键词。在1000个术语列表中查找“bluewater inn”实际上比在段落中找到它更难(假设您不知道您要查找的内容),因为您可以浏览文本并且您将找到包含该段落的段落“bluewater inn”因为它的上下文,但你在列表中找不到它,因为列表没有上下文。
为什么不多谈谈你的申请和流程,然后我们可以帮助你更好?
答案 3 :(得分:1)
我认为你想做的事情叫做“entity extraction”。这篇维基百科文章有一个很好的概述和一个应用程序列表,包括开源的应用程序。我曾经在列表中的一个商业工具上工作,但没有编程能力,所以我无法帮助你。
答案 4 :(得分:1)
Ned Batchelder在DevDays Boston发表了关于Python的精彩演讲。
他提出了一个用Python编写的拼写纠正器,它完全符合你的要求。
您可以在此处找到幻灯片和源代码: http://nedbatchelder.com/text/devdays.html
答案 5 :(得分:1)
我建议你a look at R。特别是,请查看tm
包。以下是一些相关链接:
更一般地说,有大量的文本挖掘包on the Natural Language Processing view on CRAN。