我是信息检索的新手。目前,我正在阅读Christopher D. Manning 和 Prabhakar Raghavan 撰写的名为“信息检索简介”的书。我试图实现一个基于人工智能的搜索工具来从私人数据集中搜索一些相关信息。(比如说一个化学或数学数据集,它包含更多的数字和测量单位的无结构混乱表示)
以下是我的数据集中 JSON 格式的一行,其中键是列名,值是与其对应的值。
"ABC Project": {
"In/Out diameter": " Both in and out are 1” ",
"Design Pressure (barG)": {
"Max": "116 psiG (7.99 barG)",
"Minimum": "79.7 psiG (5.49 barG)",
"Design": "174 psiG (11.99 barG)"
},
"C02 %": "0.671",
"MW": "16.68 kg/kmol",
"TITLE": null,
"Mothiram": "There is very dense forest and their lived a king. The name of the king was Pandidhurai. He was very brave ",
"Thooval delivery material": "- thooval delivery material is panam patta 316/316L "
将从我的数据集中获取上述行的示例搜索查询将是
"分子量接近 16 kg/kmol 的项目,使用 Thooval 输送材料 panam patta 316l,其中 Mothiram 是 Pandidhurai 国王"
我做了什么。
预处理
从表中读取每一行(比如) 作为和搜索查询为做以下预处理
- 转换小写(数据)
- 删除标点符号(数据)
- 删除撇号(数据)
- 删除单个字符(数据)
- 转换数字(数据)
- remove_stop_words(数据)
- 词干(数据)
- 删除标点符号(数据)
- 将单词转换为列的向量并对表中的每个相应行执行此操作
- 为列建立向量空间模型并对表中的每个相应行执行此操作
- 为查询构建向量空间模型.
- 计算余弦分数以选择高分行
我面临的挑战
当我执行“remove_punctuation(data)”时,我会丢失重要信息(比如 表示直径列中的英寸)
一种解释数据中计量单位的方法
无法保持值之间的关系(例如16.78 kg/k mol 存储在多维度中并且无法找到它与 MW 相关)。 我认为可以通过构建 ML 分类器并对其进行训练以识别实体 MW 来解决。假设 <16.78 kg/k mol, MW > 并使用测量单位作为特征。但是有不同化学成分的百分比组成,IN 和 OUT 直径,内部和外部温度等值。ETC
难以解释科学术语并映射到一种根形式(例如MW、mol wt、molwt等都是表示分子量的不同方式)
难以找到数值的接近程度
问题
- 请建议我使用此数据集构建搜索工具的分步方法(还请建议我一个在每个步骤中都会有用的 apt 算法)
- 我从这里读到,一些文档可以标记为 <document, class> 并训练 Navie Base Classifier Model 以获得更好的搜索性能。在这种情况下是否有可能,如果可以,您建议的类别标签是什么?更新:我认为 Navie Base 不能用作列或键将大于 1000。我正在寻找一种可扩展的方法来解决这个问题。
- 有没有比使用向量空间模型和计算余弦相似度更好的方法来解决这个问题?