2

假设我想在我的数据库中存储一个项目,例如“访问西班牙”。但是,我将允许用户提交,并且我想跟踪所有希望访问西班牙的用户,但是我希望他们能够输入“访问西班牙”以及“前往西班牙”、“见西班牙”或“游览西班牙”。我正在寻找一种有效的方法来做到这一点。目前我的想法让我沿着这些路线走(简化):

  • 名词
    1. 唯一身份
    2. 名词
    3. 动词 [fk]
  • 动词
    1. 唯一身份
    2. 动词
  • 同义词
    1. 唯一身份
    2. 动词 [fk]
    3. 代名词

我是不在基地,还是这是最好的方法?我正在寻找性能和易于维护...

4

1 回答 1

0

您应该研究一些简单的自然语言处理 (NLP)。

理想情况下,您需要对输入进行规范化,以便您可以搜索具有相同规范化值的用户。

  1. 首先标记输入,分离单词。“访问西班牙”将变为(“访问”,“西班牙”)和“
  2. 寻找具有等价性的单个词。例如,您可以忽略许多事情的大小写。
  3. 使用查表查找更高级的单词等价词,例如“Visit”=>“Tour”、“See”=>“Tour”。使用这个 ("Visit", "Spain") 和 ("See", "Spain") 都会被翻译成 ("Tour", "Spain")
  4. 寻找短语等价物。例如“去”=>“访问”。这将使 ("Go", "to", "Spain") 变成 ("Tour", "Spain")。
  5. 应用模式匹配。例如 ("Tour" X "and" Y) => ("Tour" X), ("Tour" Y) 可以成为两个单独的项目, ("Tour", "Spain") 和 ("Tour", "France ”)。
  6. 应用所有转换后,存储生成的标准化项。

您的工作是定义翻译类别,查找这些翻译的许多实例,然后将它们应用于您的输入。

拥有标准化项目后,您可以搜索具有相同标准化项目的其他用户。

于 2012-08-28T02:39:56.190 回答