Solr 有效地为字符串簇选择标题(簇的中心)
我有一个(不完全)集群字符串数据,其中一个集群中的项目可能如下所示:Solr 有效地为字符串簇选择标题(簇的中心),solr,cluster-analysis,similarity,phrase,carrot,Solr,Cluster Analysis,Similarity,Phrase,Carrot,我有一个(不完全)集群字符串数据,其中一个集群中的项目可能如下所示: [ Yellow ripe banana very tasty, Yellow ripe banana with little dots, Green apple with little dots, Green ripe banana - from the market, Yellow ripe banana, Nice yellow ripe banana, Cool yellow ripe
[
Yellow ripe banana very tasty,
Yellow ripe banana with little dots,
Green apple with little dots,
Green ripe banana - from the market,
Yellow ripe banana,
Nice yellow ripe banana,
Cool yellow ripe banana - my favourite,
Yellow ripe,
Yellow ripe
],
最佳标题是“黄色成熟香蕉”
目前,我在SQL GROUP BY的帮助下使用简单的启发式方法—选择最常用的名称,或者选择最短的名称(如果是tie)。我的数据包含大量这样的簇,它们经常变化,并且每次向簇中添加或从簇中删除新的水果时,都必须重新计算簇的标题
我想改进两件事:
(1) 效率-例如,仅将新水果名称与集群的标题进行比较,避免每次对所有水果标题进行分组/短语聚类
(2) 精确性-我想提取最常见的短语,而不是寻找最常见的全名。当前算法将选择“黄色成熟”,重复2次,是最常见的完整短语;然而,正如短语“黄熟香蕉”在给定的集合中最为常见
我正在考虑使用Solr+Carrot2(没有第二个的经验)。此时,我不需要对文档进行集群—它们已经基于其他参数进行了集群—我只需要选择中心短语作为集群的中心/标题
非常感谢您的任何意见,谢谢 Solr提供了一个名为ShingleFilter的分析组件,您可以使用该组件从相邻单词组中创建标记。如果您将其放在分析链中(即在索引传入文档时应用它),然后使用仅限于“水果簇”的查询计算结果字段的方面,您将能够获得所有不同的木瓦及其出现频率的列表-我认为您甚至可以检索按频率排序的木瓦-您可以很容易地使用它,我认为可以获得您想要的标题。然后,当您添加一个新的水果时,它的木瓦将自动包含在下一次的镶嵌面计算中 这项提议的具体版本如下: 创建两个字段:fruit_shingle和cluster_id 使用ShingleFilter和您可能需要的任何其他处理(例如,在使用ShingleFilter之前,使用StandardTokenizer在单词边界处进行标记化)配置fruit_shingle 使用用于标识集群的任何数据,将集群id配置为唯一id 对于每个新水果,将其文本存储在水果瓦中,将其id存储在集群id中
然后检索用于查询的facet:“cluster_id:”,您将得到一个单词、单词对、单词三元组等(木瓦)的列表。我相信,您可以将ShingleFilter配置为具有最大长度。根据您认为合适的长度和/或频率组合对面进行排序,并将其用作水果簇的“标题”。Solr提供了一个名为“木瓦过滤器”的分析组件,您可以使用该组件从相邻单词组中创建标记。如果您将其放在分析链中(即在索引传入文档时应用它),然后使用仅限于“水果簇”的查询计算结果字段的方面,您将能够获得所有不同的木瓦及其出现频率的列表-我认为您甚至可以检索按频率排序的木瓦-您可以很容易地使用它,我认为可以获得您想要的标题。然后,当您添加一个新的水果时,它的木瓦将自动包含在下一次的镶嵌面计算中 这项提议的具体版本如下: 创建两个字段:fruit_shingle和cluster_id 使用ShingleFilter和您可能需要的任何其他处理(例如,在使用ShingleFilter之前,使用StandardTokenizer在单词边界处进行标记化)配置fruit_shingle 使用用于标识集群的任何数据,将集群id配置为唯一id 对于每个新水果,将其文本存储在水果瓦中,将其id存储在集群id中
然后检索用于查询的facet:“cluster_id:”,您将得到一个单词、单词对、单词三元组等(木瓦)的列表。我相信,您可以将ShingleFilter配置为具有最大长度。根据您认为合适的长度和/或频率组合对切面进行排序,并将其用作水果簇的“标题”。您有已知水果的列表吗?还是你不知怎么发现的?因为有些琴弦实际上没有水果。你有已知水果的清单吗?还是你不知怎么发现的?因为有些琴弦里面实际上没有水果。