我试图解析文本块,需要一种方法来检测不同上下文中撇号之间的差异。一组中的占有和缩写,另一组中的引语。
例如
“我是车的主人”->[“我”,“车”,“车主”]
但是
“他说‘你好’”>[“他”、“说”、“你好”]
检测两边的空白不会有帮助,因为像“ello”和“cars”这样的东西会解析为引号的一端,与匹配的一对撇号相同。我觉得除了一个异常复杂的nlp解决方案之外,没有其他方法可以做到这一点,我只能忽略任何没有出现在单词中间的撇号,这将是不幸的。
编辑:
自从写作以来,我就意识到这是不可能的。任何基于regex ish的解析器都必须解析:
“喂,我的伙伴们”的狗
有两种不同的方式,只有理解了句子的其余部分才能做到这一点。我想我赞成一种不雅的解决方案,即忽略最不可能的情况,并希望这种情况非常罕见,只会导致罕见的异常。
最佳答案
嗯,恐怕这不容易。这里有一个正则表达式,有点工作,唉,只有像“我”和“我已经”这样的东西:
>> s1 =~ /[\w\s]*((?<!I)'(?:[^']+)')[\w\s]*/
=> nil
>> s2 =~ /[\w\s]*((?<!I)'(?:[^']+)')[\w\s]*/
=> 0
>> $1
=> "'hello there'"
如果你多玩玩它,你可能可以消除一些其他常见的宫缩,这可能仍然比什么都没有要好。
关于ruby - 如何检测缩写所用的'和引号之间的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10524475/