hen*_*y74 22 ruby parsing text split nlp
你如何考虑段落或大量的文本并将其分解为句子(最好使用Ruby),同时考虑到Mr.和Dr.以及USA这样的案例?(假设你只是将句子放入一个数组数组中)
更新:我想到的一个可能的解决方案是使用词性标注器(POST)和分类器来确定句子的结尾:
从琼斯先生那里获取数据时,他走出意大利避暑别墅的阳台,感受到了温暖的阳光.他很高兴活着.
CLASSIFIER先生/ PERSON Jones/PERSON感觉/ O/O温暖/ O太阳/ O开/ O他/ O面/ O as/O他/ O步/ O出/ O到/ O/O阳台/ O/O他/ O夏天/ O家/ O in/O意大利/ LOCATION ./O他/ O是/ O快乐/ O到/ O是/ O活着/ O ./O
POST先生/ NNP Jones/NNP感觉/ VBD/DT温暖/ JJ太阳/ NN on/IN他/ PRP $ face/NN as/IN他/ PRP踩/ VBD输出/ RP上/ IN/DT阳台/ NN /他/ PRP $ summer/NN home/NN in/IN Italy./NNP He/PRP/VBD happy/JJ to/TO be/VB alive./IN
我们可以假设,由于意大利是一个地点,这段时间是句子的有效结束吗?自从"先生"结束 没有其他词性,我们可以假设这不是一个有效的句末期吗?这是我问题的最佳答案吗?
思考?
Sto*_*ken 13
试着看看Stanford Parser周围的Ruby包装器.它有一个getSentencesFromString()函数.
小智 5
看看NLTK(自然语言工具包)中的Python句子分割器:
它基于以下论文:
Kiss,Tibor和Strunk,Jan(2006):无监督多语言句子边界检测. 计算语言学 32:485-525.
本文的方法非常有趣.它们将句子分裂的问题减少到确定单词与跟随标点符号相关联的强度的问题.缩写后的句点超载是大多数模糊句点的原因,因此如果您可以识别缩写,则可以高概率地识别句子边界.
我已经非正式地测试了这个工具,它似乎可以为各种(人类)语言提供良好的结果.
将它移植到Ruby将是非常重要的,但它可能会给你一些想法.