用于电子邮件清理的开源项目从非结构化源生成结构化数据?

时间:2011-12-08 22:56:26

标签: nlp data-mining text-processing data-scrubbing

不知道从哪里开始,所以希望你们能解决我的问题。我有一个项目,在这个项目中,将搜索特定字词/模式的电子邮件并以结构化方式存储。用Trip it完成的事情。

The article states他们开发了一个DataMapper

  

DataMapper负责接收入站电子邮件   致计划[at] tripit.com并将其转变为   您在邮件阅读器中看到的半结构化格式   结构化XML文档。

还有一条评论也说明了

  

如果您想自己构建,请阅读一下   Wrappers和Wrapper Induction可能会有所帮助

我用谷歌搜索并阅读有关包装器归纳的内容,但它的定义过于宽泛,并没有帮助我理解如何解决这个问题。

是否有一些开源项目可以做类似的事情?

2 个答案:

答案 0 :(得分:1)

您可以通过几种不同的方式和方法来实现这一目标。

第一部分涉及访问我不会在这里回答的电子邮件内容。基本上,我假设你可以访问电子邮件的文本,如果你没有,有一些库允许你将java连接到像camel(http://camel.apache.org/mail.html)这样的电子邮箱。

所以现在你收到了电子邮件,然后呢?

一个方便的事情可能有用,就是lingpipe(http://alias-i.com/lingpipe/)有一个实体识别器,你可以使用自己的术语填充。具体来说,看一下他们的一些提取教程和他们的字典提取器(http://alias-i.com/lingpipe/demos/tutorial/ne/read-me.html)所以在lingpipe字典提取器(http://alias-i.com/lingpipe/docs/api/com/aliasi/dict/ExactDictionaryChunker.html)里面你只需导入你感兴趣的术语并用它来将标签与电子邮件相关联。

您可能还会发现以下问题有用:Dictionary-Based Named Entity Recognition with zero edit distance: LingPipe, Lucene or what?

答案 1 :(得分:1)

真的是一个非常广泛的问题,但我可以尝试给你一些一般性的想法,这可能足以开始。基本上,这听起来像是在谈论一个精心设计的解析问题 - 扫描文本并寻找将特定块应用于特定块。根据您正在寻找的内容,您可能会从一些正则表达式中获得一些好的开始 - 电话号码,电子邮件地址和日期等内容具有相当标准的结构,应该是可匹配的。其他数据点可能会受益于某些指示词 - “离开”这一短语可能表明以下内容是一个地址。自然语言处理社区还有一个可用于文本处理的大型工具集 - 如果它们适合您正在尝试的操作,请查看词性标记器和语义分析器等内容。

使用这些技术,您可以遵循基本的迭代开发过程:对于预期输出结构中的每个数据点,定义一些关于如何捕获它的简单规则。然后,在一批测试数据上运行应用程序,查看哪些样本没有捕获该数据。查看样本并修改规则以捕获这些样本。重复,直到提取器达到可接受的准确度。

根据您的问题的具体情况,可能有机器学习技术可以为您自动完成大部分过程。