我想要做的是解析原始自然文本并找到描述日期的所有短语。
我有一个相当大的语料库,其中包含所有日期标记的引用:
I met him <date>yesterday</date>.
Roger Zelazny was born <date>in 1937</date>
He'll have a hell of a hangover <date>tomorrow morning</date>
我不想解释日期短语,只需找到它们。事实上,他们的约会是无关紧要的(在现实生活中,他们甚至不是约会,但我不想让你厌烦细节),基本上它只是一套开放式的可能值。值本身的语法可以近似为无上下文,但手动构建非常复杂,而且越来越复杂,越来越难以避免误报。
我知道这是一个很长的镜头,所以我不期待在那里存在开箱即用的解决方案,但我可以使用哪种技术或研究?
答案 0 :(得分:6)
学术界和工业界使用的一种通用方法基于条件随机场。基本上,它是一个特殊的概率模型,您首先使用标记的数据进行训练,然后它可以标记给定文本中的某些类型的实体。
您甚至可以尝试使用斯坦福自然语言处理组的一个系统:Stanford Named Entity Recognizer
当您下载该工具时,请注意有几个型号,您需要最后一个:
Stanford NER包含一个为CoNLL培训的4级模型, 为MUC训练的7级模型,以及在两者上训练的3级模型 这些类集交集的数据集。
3班级,人员,组织
4级地点,人员,组织,杂项
7课时,地点,组织,人,钱,百分比,日期
更新。您实际上可以尝试使用该工具online here。选择muc.7class.distsim.crf.ser.gz
分类器并尝试一些带日期的文本。它似乎不承认“昨天”,但它承认“20世纪”,例如。最后,这是CRF培训的问题。
答案 1 :(得分:4)
请记住,CRF训练速度相当慢,需要人工注释数据,所以自己动手并不容易。阅读this的答案,了解人们在实践中经常如何做到的另一个例子 - 与当前的学术研究没有太大的共同点。