gpt4 book ai didi

search - Solr - 如何以复合 "word-1, word-1 + word-2, word-1 + word-2 ... word-n"方式标记字符串中的单词?

转载 作者:行者123 更新时间:2023-12-04 15:14:58 28 4
gpt4 key购买 nike

我想标记一个字符串,例如 Best Beat Makers,以几乎类似于 NGram 的方式为每个单词生成标记,例如:

IN:  "Best Beat Makers"
OUT: ["Best", "Beat", "Makers", "Best Beat", "Best Beat Makers"]
^ ^
| |
How can I generate these tokens?

结果应该包括“Beat Makers”,因为我只想以复合方式标记单词(例如 word1、word1 + word2、word1 + word2 + word3等)而不是组合(例如 word1、word1 + word2、word2 + word3 等)。

目前,我只能使用 StandardTokenizerFactoryClassicTokenizerFactory 生成前三个标记,而传统的 NGramTokenizerFactory 仅适用于字符一个词(并且在索引上有点昂贵)。

我考虑过的一个选项是使用 StandardTokenizerFactory 获取前三个标记,然后创建一个 copyField 到另一个使用 PatternTokenizerFactory 的字段> 定义了一个正则表达式来获取最后两个标记,但如果可能的话,我更愿意只使用一个字段来获取我需要的标记。

如果您更熟悉 ElasticSearch,我仍然想听听您的想法,因为 Solr 和 ES 之间的分词器或多或少相似,可能会把我推向正确的方向。谢谢!

最佳答案

叠式过滤器:此过滤器从 token 流构造带状符号,它们是 token n-gram。它将 token 运行组合成一个 token 。

您还可以使用以下属性。

maxShigleSize:(整数,必须 >= minShigleSize,默认为 2)每个 shingle 的最大 token 数。

这里是应用的字段类型。

<fieldType name="text_tokens" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true"/>
</analyzer>
</fieldType>

输入是:“欢迎使用 Apache Solr”

预期的输出是:

Unigram: "Welcome", "to", "Apache", "Solr"
Bigram: "Welcome to", "to Apache", "Apache Solr"
Trigram: "Welcome to Apache", "to Apache Solr"

下面是你分享的文字分析。

输入是:Best Beat Makers

image

关于search - Solr - 如何以复合 "word-1, word-1 + word-2, word-1 + word-2 ... word-n"方式标记字符串中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64492024/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com