首页 > 解决方案 > 如何为nlp查找单词的前缀

问题描述

我想为 nlp 目的找到一个单词的前缀(对形态否定感兴趣)。

例如,我想知道“unable”是否定的,但“university”没有任何形式的否定。到目前为止,我一直在使用startswith python函数,但显然可能存在一些问题。

有没有人有查找单词前缀的经验?我觉得应该有一些库或api,但我不确定。

谢谢!

标签: pythonnlp

解决方案


如果没有完整的形态分析器,您可以使用例外列表和最长匹配来解决此问题。

例如:您假设un-表示否定。首先,找到更长的前缀(例如uni-),并首先匹配它,然后再查看un-。会有一些例外,例如uninteresting,您可以单独检查。这将是一个相当小的列表。然后,一旦处理了所有的uni- words,任何以un-开头的东西都是候选的,尽管也会有例外,比如under

如果你有一个基本的单词列表,一个稍微更好的解决方案是可能的:从字符串的开头剪切un-,并检查其余部分是否在你的单词列表中。University将变为versity,它不在您的列表中,因此它不是un-前缀。但是,uninteresting会变得很有趣,也就是说,在这里你找到了一个有效的前缀。为此,您只需要一个非否定词列表。当然,您也可以将其用于其他前缀,例如alpha privative,因为在非典型中,其余的典型将在您的列表中。

如果您没有这样的列表,只需将文本拆分为标记,对它们进行排序和唯一化,然后向下扫描以候选前缀开头的单词行。这有点乏味,但相关单词的数量并没有那么大。这就是我们 30 年前在 NLP 中所做的事情...... :)


推荐阅读