gpt4 book ai didi

java - 用solr构建标签云

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:58 25 4
gpt4 key购买 nike

亲爱的 stackoverflow 社区:

给定一些文本,我希望获得文本中出现频率最高的前 50 个单词,并从中创建一个标签云,从而以图形方式显示文本的主旨。

text 实际上是一组 100 条左右的评论,每个项目(一张图片)大约有 120 个项目,我也想保持云更新 - 通过保持评论索引,并使用云生成代码在每次出现新的 Web 请求时运行。

我决定使用 Solr 为文本编制索引,现在想知道如何从 Solr 中获取前 50 个单词 TermsVectorComponant .这是在您通过说 tv.tf="true" 打开术语频率后,术语 vector 组件返回的结果示例。 :

  <lst name="doc-5">
<str name="uniqueKey">MA147LL/A</str>
<lst name="includes">
<lst name="cabl"><tf>5</tf></lst>
<lst name="earbud"><tf>3</tf></lst>
<lst name="headphon"><tf>10</tf></lst>
<lst name="usb"><tf>11</tf></lst>
</lst>
</lst>

<lst name="doc-9">
<str name="uniqueKey">3007WFP</str>
<lst name="includes">
<lst name="cabl"><tf>5</tf></lst>
<lst name="usb"><tf>4</tf></lst>
</lst>
</lst>

如您所见,我有两个问题:

  1. 我得到文档中该领域的所有术语,而不仅仅是前 100 个术语
  2. 而且它们不是按频率排序的,所以我必须获取术语并在内存中对其进行排序才能执行我正在尝试的操作。

有没有更好的方法? (或)我可以告诉 solr termvector 组件以某种方式对其进行排序并只为我挑选 100 个吗? (或)我可以使用其他一些框架吗?我需要在新评论出现时将它们编入索引,因此标签云始终是最新的 - 至于云生成器,它采用加权词字典,并将其制作成漂亮的图像。

This回答没有帮助。

编辑 - 尝试 jpountz 和 paige cook 的回答

这是我为这个查询得到的结果:

    select?q=Id:d4439543-afd4-42fb-978a-b72eab0c07f9&facet=true
&facet.field=Post_Content&facet.minCount=1&facet.limit=50

<int name="also">1</int>
<int name="ani">1</int>
<int name="anoth">1</int>
<int name="atleast">1</int>
<int name="base">1</int>
<int name="bcd">1</int>
<int name="becaus">1</int>
<int name="better">1</int>
<int name="bigger">1</int>
<int name="bio">1</int>
<int name="boot">1</int>
<int name="bootabl">1</int>
<int name="bootload">1</int>
<int name="bootscreen">1</int>

我有 50 个这样的元素,@jpountz 感谢您帮助限制结果,但为什么所有五十个人 <int>元素的值是1?我的想法是:数字 1 代表与我的查询匹配的文档数(因为我通过 Id:Guid 查询,所以只能是一个),它们不代表 Post_Content 中单词的频率。

为了证明这一点,我从查询中删除了 Id:GUID,结果是:

<int name="content">33</int>
<int name="can">17</int>
<int name="on">16</int>
<int name="so">16</int>
<int name="some">16</int>
<int name="all">15</int>
<int name="i">15</int>
<int name="do">14</int>
<int name="have">14</int>
<int name="my">14</int>

我的问题是如何获取文档中的词频,而不是很多词的文档频率。例如,我知道可启动是我在 Post_content 中使用了 6 次的词,所以我想要对一组文档进行排序,例如 (6,"bootable"), (5,"disc")。

最佳答案

这是一篇描述设置标签云的文章 - Creating a Tag Cloud with Solr and PHP .虽然 PHP 部分可能不适用于您,但我相信标签云的实际生成是...

本文介绍了一种方法,该方法使用空白分词器创建文本字段以返回单个单词,然后针对该字段执行分面搜索。我知道您可以设置方面限制,因此在您的情况下,您只能获得前 100 个结果。

关于java - 用solr构建标签云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7318326/

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