gpt4 book ai didi

java - 用于搜索的同义词数据结构

转载 作者:行者123 更新时间:2023-11-30 10:39:59 25 4
gpt4 key购买 nike

我正在寻找一种数据结构来保留同义词。我想在存储桶中保留同义词,例如“北美”、“美国”、“美国”。

搜索内容可以标记为“北美”、“美国”、“美国”中的任何一个。

For example, 
Content_1 is tagged "USA"
Content_2 is tagged "North America"
Content_3 is tagged "United States"

如果用户搜索“USA”,搜索结果应返回所有三个内容,而不仅仅是 Content_1。为此,我必须获取 USA 的所有同义词,然后进行搜索。

如何在查找其中一个同义词并获取所有其他同义词的地方存储同义词?

一种方法是通过如下所示的 HashMap

USA -> North America,United States
United States -> USA, North America
North America -> USA,United States

这个看起来不太好。请建议一个好的数据结构来存储同义词。

谢谢。

最佳答案

Access is O(1). But building a data structure looks like generating duplicate items. A better data structure where only one entry is stored.

您可以使用两种数据结构。一个用于存储它们,一个用于查找。一个 vector 的 vector ,包含一个词的所有同义词。以及指向容器的 HashMap ,其中包含 O(1) 查找的所有同义词。

因此,您可以将同义词存储在这样的数据结构中(字符串列表的列表):

{{"USA","North America","United States"},{"Tiny","Small"},{"Great","Good"}}

然后您将拥有一个 HashMap ,因此如果您搜索“USA”,您将获得第一个列表。如果您搜索“小”,您将获得第二个列表。

"USA"->{"USA","North America","United States"}
"Small"->{"Small","Tiny"}

HashMap 中的数据只是对您保存在其他数据结构中的同义词列表的引用。

关于java - 用于搜索的同义词数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39085213/

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