不知道从哪里开始,所以希望你们能解决我的问题。我有一个项目,在这个项目中,将搜索特定字词/模式的电子邮件并以结构化方式存储。用Trip it完成的事情。
The article states他们开发了一个DataMapper
DataMapper负责接收入站电子邮件 致计划[at] tripit.com并将其转变为 您在邮件阅读器中看到的半结构化格式 结构化XML文档。
还有一条评论也说明了
如果您想自己构建,请阅读一下 Wrappers和Wrapper Induction可能会有所帮助
我用谷歌搜索并阅读有关包装器归纳的内容,但它的定义过于宽泛,并没有帮助我理解如何解决这个问题。
是否有一些开源项目可以做类似的事情?
答案 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)
真的是一个非常广泛的问题,但我可以尝试给你一些一般性的想法,这可能足以开始。基本上,这听起来像是在谈论一个精心设计的解析问题 - 扫描文本并寻找将特定块应用于特定块。根据您正在寻找的内容,您可能会从一些正则表达式中获得一些好的开始 - 电话号码,电子邮件地址和日期等内容具有相当标准的结构,应该是可匹配的。其他数据点可能会受益于某些指示词 - “离开”这一短语可能表明以下内容是一个地址。自然语言处理社区还有一个可用于文本处理的大型工具集 - 如果它们适合您正在尝试的操作,请查看词性标记器和语义分析器等内容。
使用这些技术,您可以遵循基本的迭代开发过程:对于预期输出结构中的每个数据点,定义一些关于如何捕获它的简单规则。然后,在一批测试数据上运行应用程序,查看哪些样本没有捕获该数据。查看样本并修改规则以捕获这些样本。重复,直到提取器达到可接受的准确度。
根据您的问题的具体情况,可能有机器学习技术可以为您自动完成大部分过程。