我对解析半结构化文本很感兴趣。假设我的文字包含此类标签: @ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "collab_technos",
joinColumns = {@JoinColumn(name = "co_id", nullable = false, updatable = false)},
inverseJoinColumns = @JoinColumn(name = "te_id")
)
,year_field
,year_value
,identity_field
,...,identity_value
,address_field
等等。
这些字段及其相关值可以在文本中的任何位置,但通常它们彼此接近,更常见的是组织在(非常)粗糙矩阵中的文本,但通常值恰好在关联之后最后一些非有趣的信息。
不同格式的数量可以达到几十个,并且不是那么严格(不要指望间距,而且可以添加和删除一些信息)。
我正在寻求机器学习技术来提取所有感兴趣的(领域,价值)。
我认为度量学习和/或条件随机字段(address_value
)可能会有很大帮助,但我没有实际经验。
有没有人遇到过类似的问题?
有关此主题的任何建议或文献?
答案 0 :(得分:0)
如果我理解正确,您的任务是从文本中提取所有预定义的实体。你在这里描述的正是named entity recognition。
斯坦福有一个Stanford Named Entity Recognizer你可以下载和使用(python / java等)
关于您考虑的模型(例如CRF) - 这里的难点是获取训练数据 - 已经标记的实体的句子。这就是为什么你应该考虑获得一个训练有素的模型,或者使用别人的数据训练你的模型(同样,模型只能识别它在训练部分看到的实体)
在python中已经是火车模型的一个很好的选择是nltk' s Information Extraction module。
希望这总结起来