我正在尝试分析一组短语,但我并不确定“自然语言处理”如何能帮助我,或者是否有人可以与我分享他们的知识。
我的目标是提取街道和地点信息。这类信息通常不会以结构化的方式呈现给读者,因此很难找到解析的方法。我有两个主要目标。
首先是提取街道本身。据我所知,NLP库可以帮助我对短语进行分词并进行分析,从而提取名词(例如)。但街道从哪里开始,到哪里结束呢?我假设我需要将这个分析与街道数据库进行比较,但我不知道最佳的方法是什么。
此外,我还想推断出严重程度,例如在车祸中的严重程度。我假设唯一的方法是通过短语中出现的词语建立某种启发式规则(例如,如果出现“死亡”一词则加100分)。我这样想对吗?
非常感谢你们一如既往的帮助!:)
回答:
你想要做的第一部分(“首先是提取街道本身。[…]但街道从哪里开始,到哪里结束呢?”)属于NLP的一个子领域,称为命名实体识别。有许多可用的库可以完成这项任务。我个人喜欢Python的NLTK。根据你的选择,我认为街道名称数据库对于训练识别器会很有用,但你可能使用默认语料库也能获得不错的结果。请阅读你所使用的NLP库的文档以了解更多信息。
第二部分,识别事故的严重程度,起初可以作为一个独立的问题来处理。你可以将原始词语或它们的词性标签作为特征,并训练一个分类器(SVM、HMM、KNN,由你选择)。你需要一个相当大的、正确标记的训练集;从你的描述来看,我不确定你是否有这样的数据集?
“我假设唯一的方法是通过短语中出现的词语建立某种启发式规则”这句话非常模糊,可能意味着很多事情。根据下一句话,看起来你认为扫描预定义的关键词列表是唯一的方法。如果是这样的话,不,请看上面的段落。
一旦你完成了这两部分的工作,你就可以将它们结合起来,统计每条街道的 accidents 数量及其严重程度。使用一些地理编码库,你甚至可以推广到社区或城市。另一个挑战是检测同义词(例如“Smith Str”与“John Smith Street”)和同音异义词(例如伦敦的“Smith Street”与利兹的“Smith Street”)。