dmc*_*cer 8 java lucene nlp data-mining text-mining
我有一个数据集,在底层文本上有多层注释,例如部分标签,来自浅层解析器的块,名称实体以及来自各种 自然语言处理(NLP)工具的其他部分.对于像这样的句子The man went to the store,注释可能如下所示:
Word POS Chunk NER ==== === ===== ======== The DT NP Person man NN NP Person went VBD VP - to TO PP - the DT NP Location store NN NP Location
我想使用Lucene索引一堆带有这些注释的文档,然后在不同的层上执行搜索.简单查询的一个示例是检索华盛顿被标记为人的所有文档.虽然我并不是完全致力于表示法,但语法上的最终用户可能会按如下方式输入查询:
查询:Word=Washington,NER=Person
我还想做更复杂的查询,涉及跨不同层的注释的连续顺序,例如,找到所有文档,其中有一个单词标记的人,后面arrived at是单词标记位置的单词.这样的查询可能如下所示:
查询:"NER=Person Word=arrived Word=at NER=Location"
用Lucene来解决这个问题的好方法是什么?无论如何索引和搜索包含结构化令牌的文档字段?
有效载荷
一个建议是尝试使用Lucene 有效负载.但是,我认为有效载荷只能用于调整文档的排名,并且它们不用于选择返回的文档.
后者很重要,因为对于某些用例,包含模式的文档数量确实是我想要的.
此外,仅检查与查询匹配的术语上的有效负载.这意味着有效载荷只能甚至与第一例子查询的排名帮忙,Word=Washington,NER=Person由此我们只是想确保长期Washingonton被标记为Person.但是,对于第二个示例查询, "NER=Person Word=arrived Word=at NER=Location"我需要检查未指定的标签,从而检查不匹配的条款.