1

我一直在玩NLTK中的一堆词干分析器和词形还原器,但没有一个能满足我的要求。我有一堆词,如“radiologist”、“radiology”、“cardiologist”、“cardiology”等……我想让 *ologist 与 *ology 同一个桶。我在 Python 中尝试过 PorterStemmer、SnowballStemmer 和 WordNet 的 Lemmatizer,但没有将它们发送到同一个存储桶。似乎词干提取应该可以做到这一点,而且这些词并不少见。您将如何实现预期的结果?

4

3 回答 3

1

你看过莫菲索吗?它具有一堆变形分割算法。显然,使用此工具可以进行您正在寻找的分析。这是链接 [1]:http ://asr.aalto.fi/morfessordemo/

于 2016-04-07T17:28:16.890 回答
0

像这样的东西?

>>> s = 'cardiology'
>>> s = s[:-5] if s.endswith('ology') else s
>>> s = s[:-7] if s.endswith('ologist') else s
>>> s
'cardi'
>>> s = 'cardiologist'
>>> s = s[:-5] if s.endswith('ology') else s
>>> s = s[:-7] if s.endswith('ologist') else s
>>> s
'cardi'
于 2016-04-07T12:19:38.583 回答
0

词干提取/词形还原的过程假定仅删除屈折变化后缀(即-s从单词中删除后缀radiologists),而您也想删除派生后缀。

试试灵瓜机器人。它能够将单词分割成语素。例如,这个词simplifications被分割成基本词simple(我假设这是你想要检索的)和派生后缀(-ify,-ation-s)。根据API,您的情况并不那么简单,radiologist仅包含词缀(radio-+ -logy+ -ist)。不知何故,你需要弄清楚在这种情况下要留下什么词缀。我也不确定您是否要留下前缀(preprocessprocess)。除此之外,您还需要考虑复合词,因为它们包含多个词根。

于 2019-10-07T22:06:28.513 回答