Mysql 将试卷中类似的总和/问题联系起来

Mysql 将试卷中类似的总和/问题联系起来,mysql,algorithm,data-mining,related-content,Mysql,Algorithm,Data Mining,Related Content,我正在开发一个应用程序,该应用程序正在创建一个数据库,其中包含来自旧问题论文的问题。我想维护一个表格,将插入的类似问题链接在一起。(我心目中的表是一个经过修改的预排序遍历树) 我的要求是: 数字更改后的单词问题应链接在一起 专有名词/名称不同的单词问题应联系在一起 XYZ、ABC、PQR、MNO是等效的(例如三角形术语) 忽略标点符号、连词和“小词” 标签!我在每个问题上加上主题。数学问题与历史问题相似的可能性很小。但化学热力学问题可能类似于物理热力学问题 任何关于如何在算法方面进行的想法都将不

我正在开发一个应用程序,该应用程序正在创建一个数据库,其中包含来自旧问题论文的问题。我想维护一个表格,将插入的类似问题链接在一起。(我心目中的表是一个经过修改的预排序遍历树)

我的要求是:

  • 数字更改后的单词问题应链接在一起
  • 专有名词/名称不同的单词问题应联系在一起
  • XYZ、ABC、PQR、MNO是等效的(例如三角形术语)
  • 忽略标点符号、连词和“小词”
  • 标签!我在每个问题上加上主题。数学问题与历史问题相似的可能性很小。但化学热力学问题可能类似于物理热力学问题
  • 任何关于如何在算法方面进行的想法都将不胜感激

    我还将处理包含数学符号的图像。我应该确保我的所有图像在“ALT”属性中都有LaTeX,以确保它们可以通过此算法进行处理,还是有更好的方法进行处理?

    您需要进行特征提取并仔细阅读


    数据挖掘的关键是预处理。你不能把你的硬盘扔向它,期望它能找到任何有用的东西,但是你需要通过适当地预处理数据来指导搜索。这可能是90%的工作。所以请仔细阅读特征提取 一种方法是一种称为“simhashing”的技术;一个是获取(预处理的)文档并计算simhash指纹。像典型的散列一样,指纹大小固定,看起来像二进制乱码。与典型的散列不同,文本相似的文档也会有相似的指纹。通过选择一个最大的(Hamming)距离,指纹可以不同,你可以定义一组文档(问题),你认为“相似”。 为新问题编制索引的过程如下所示:

  • 规范化问题文本。这是一个标准的信息检索任务,它对每个人来说都意味着稍微不同的事情,但是像折叠空白、将所有内容放在小写和剥离标点符号这样的转换是典型的。您可能还希望将所有数字或专有名称的白色列表转换为占位符(“数字”、“名称”等)
  • 将结果文本馈送到simhash实现中以获取指纹
  • 在你的语料库中搜索离新的指纹足够近的指纹。这实际上比你想象的要复杂得多,这可以归结为一个分类的指纹表,其中添加了一些人造指纹
  • 找到插入的问题应该被视为类似的问题后,您可以随意丢弃重复的问题,保留它并进行簿记,等等

  • 这是一本关于信息检索的优秀入门书。这是最新的。下面是一个计算simhash的简单程序的示例,如果您不想自己实现该算法,这可能是一个很好的起点。

    +1表示“您可能还想将所有数字或专有名称的白名单转换为占位符(“数字”、“名称”等)”还有指向simhashing的指针:)这可能会让我听起来完全愚蠢,但值得一试。我可以使用Jaro Winkler距离比较这些散列来找到类似的散列吗?不过,效率似乎是一个大问题,正如我在中指出的,我想我必须添加一些索引来简化散列匹配。但我想我现在似乎明白了:)你可以用一个加权的Jaro Winkler来判断simhash距离。问题是散列“0af”应该被认为比“0ff”更接近“0bf”,尽管两者都被关闭了一个字符;JW会考虑等距(如果我读对了),可以通过保持哈希作为字符字符串“0”和“1”来跳舞,在这种情况下JW减小到汉明距离。然而,我仍然建议在Simhash上保留一个索引/有序表,并坚持使用二进制搜索。+1表示指向特征提取的指针:)我正在考虑研究一些问题,以创建一组基本的“标记”,我可以从问题体中自动检测。然而,这将是一个非常漫长的过程。有没有一种方法可以创建我所缺少的“自动学习”系统?