首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以直接修改术语频率/术语向量?

是否可以直接修改术语频率/术语向量?
EN

Stack Overflow用户
提问于 2014-02-23 15:47:23
回答 1查看 218关注 0票数 4

我想使用Lucene.NET来存储和查询术语向量。但是,我不希望从文档中创建术语向量。相反,我希望能够直接编写和更新术语向量,而不需要术语/标记的位置或偏移。

解决方法是从术语向量生成文本,即从术语向量生成文本。

foo: 3; bar: 1

生成文本

foo, foo, foo, bar

让Lucene索引这段文字。如果我想将bar的词频更新为2,我可以获取存储的文本(或者从旧的术语向量生成它,如果我不存储它),将它更改为

foo, foo, foo, bar, bar

并更新索引中的相应文档。

对于这样简单的任务来说,这是相当昂贵的。显然,这不是用例,Lucene是为之构建的。不过,我还是希望能利用Lucene的力量来查询,等等。

是否有一种方法可以直接为文档编写术语向量,或者您有其他好的想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-25 10:14:18

正如我在我的问题中所说的,Lucene并不打算直接存储和操作术语向量。至少在更新向量一词的过程中,最初的做法或多或少是要走的路:

  1. 检索表示相关术语向量的文档。
  2. 更新文档的“相应”字段
  3. 重新索引文档(在Lucene中Delete, then Add等于Update )

我还没有找到一种方法来更新向量中的单个词条频率,而不对整个文档进行索引。

问题中描述的方法的一个改进是将术语向量编码为术语频率对:

而不是

foo酒吧

字段内容可以编写为

福:3;吧台:1;

然后,您可以编写一个自定义TokenFilter,它逐个读取这些令牌,然后返回术语n时间。这将不会提高性能,但简化了术语向量的处理。如果您不熟悉自定义令牌过滤器和分析器,那么使用这种方法可能是不值得的,我将坚持我在问题中已经提出的天真版本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21970462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档