为了构建一个科学参考解析器,我正在考虑一种“人工智能”系统,并且想知道类似的东西是否已经是人工智能研究中既定的“设计模式”。
系统的输入将是具有以下结构的科学参考文献:
“共同作者、标题、期刊、卷、期、开始页、年份”
当然,许多其他变体也是可能的,我想构建一个系统,在不熟悉的模式下可以做出“最佳猜测”。
目前,这是通过手动将不同方法的结果链接在一起来完成的,从正则表达式模式到更复杂的算法,如 N-Grams、LSH 和随机森林。我正在考虑一个人工智能系统,它会以最优化的方式自动将所有这些方法“链接”在一起。我想象它的工作方式是通过我所说的“一袋功能”。那么,这将如何工作?
- 对于我目前使用的每种方法,我都会指定它们的输入要求,并指定它们作为输出提供的内容。(例如:输入 = 参考,输出 = 标题)。这些也可以是参数,例如:输入 = 年份,输出 = 是有效年份吗?. 请注意,如果一个函数输出“title”,即尝试提供标题,但这不一定是正确的(例如,如果正则表达式模式抓取了错误的文本部分)。
- 对于这些函数中的每一个,我都会建立一个训练集,并记录它们的执行时间(成本)和它们提供正确结果的概率。
- 然后,我会构建一个系统,将这些功能链接在一起,从某个输入到某个输出。例如:从 - 一个接受引用并输出共同作者列表的函数 - 到 - 一个接受共同作者列表的函数,并将其分成单独的作者 - 到 - 一个接受作者的函数,并尝试把它分成姓氏和首字母-。
- 一旦找到函数的“链”,该链可以反过来存储为“函数”,并且可以稍后由算法重用。对于每个功能,成功率和运行时间都被存储,因此算法可以选择去最快的已知路线,或者尝试新功能。
- 在设置中,您可以指定最大运行时间(成本)或最小成功率。通过这种方式,您可以推动系统尝试新的功能组合。
我不确定我是否清楚地解释了意图,并且我不确定一旦我尝试在现实中实现这个设计是否会成立。只是想把这个扔在这里,看看是否有人认出这个设计。这感觉就像是最短路径算法(连接函数)与正常统计概率(确定函数的成功率)与“自学习”系统的组合(因为函数的组合可以“记住”并重用) .
额外的好处是我不需要手动猜测在什么特定场景下我应该给出更高或更低的正确可能性的解析方法。它可以让我把一个新功能“扔”进包里,让系统在各种配置下测试它,学习什么时候最好使用它,什么时候避免它。
任何反馈将不胜感激!:)