我想知道构建一个反向语言词典需要什么。
用户输入类似这样的内容:“红色 可食用 水果”,然后应用程序返回:“西红柿、草莓、…”
我假设这些结果应该基于某种形式的关键词,比如同义词,或者某种形式的字符串搜索。
这是一个该概念的在线实现。
那里发生了什么,涉及哪些方面?
EDIT 1:
这个问题更多是关于“如何”做,而不是“用哪个工具”; 但是,请随意提供您认为可以完成这项工作的工具。
回答:
任何方法基本上都涉及拥有一个规范化的数据库。这是一个你的数据库结构可能是什么样子的基本示例:
// terms
+-------------------+
| id | name |
| 1 | tomatoes |
| 2 | strawberries |
| 3 | peaches |
| 4 | plums |
+-------------------+
// descriptions
+-------------------+
| id | name |
| 1 | red |
| 2 | edible |
| 3 | fruit |
| 4 | purple |
| 5 | orange |
+-------------------+
// connections
+-------------------------+
| terms_id | descript_id |
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
| 3 | 1 |
| 3 | 2 |
| 3 | 5 |
| 4 | 1 |
| 4 | 2 |
| 4 | 4 |
+-------------------------+
这是一个相当基本的设置,但是它应该让你了解使用查找表的多对多关系如何在数据库中工作。
您的应用程序必须分解字符串,并且能够处理用户输入规范化,例如消除后缀。然后脚本将查询connections
表并返回结果。