我如何挖掘文本数据?

时间:2009-10-15 21:04:33

标签: sorting text data-mining

这是问题所在。我有一堆带有段落和段落的大文本文件。每个段包含对少数人(名称)的引用,并记录一些主题(地点,对象)。

我如何挖掘这堆数据以组装一些分类库? ......一般来说,有两件事。

  1. 我不知道我在找什么,so I need a program来获取最常用的单词/多个单词(“Jacob Smith”或“bluewater inn”或“arrow”)。

  2. 然后知道关键字,我需要一个程序来帮助我搜索相关的段落,然后对结果进行排序和细化(手动手动)。

6 个答案:

答案 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)

你问的问题是你不知道你在找什么。如果你有一些你关心的加权术语列表,那么你就会处于良好的状态。

从语义上讲,问题是双重的:

  • 一般来说,最常用的词是最不相关的。即使你使用了一个停用词文件,仍有很多糠..
  • 通常,最少使用的单词是最相关的。例如,“bluewater inn”可能很少见。

假设您有一些能够满足您要求的内容,并生成了一个清晰的列表,其中列出了您的文本中出现的所有关键字。会有数千个这样的关键词。在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