跳转到主要内容

生成英语单词的所有可能形式。

项目描述

word forms logo

准确生成英语单词的所有可能形式

Word forms可以准确生成英语单词的所有可能形式。它可以进行动词的词形变化。它可以连接不同的词性,例如名词到形容词、形容词到副词、名词到动词等。它可以复数化单数名词。它全部在一个函数中完成。请享受吧!

示例

一些非常及时性的示例 :-P

>>> from word_forms.word_forms import get_word_forms
>>> get_word_forms("president")
>>> {'n': {'presidents', 'presidentships', 'presidencies', 'presidentship', 'president', 'presidency'},
     'a': {'presidential'},
     'v': {'preside', 'presided', 'presiding', 'presides'},
     'r': {'presidentially'}}
>>> get_word_forms("elect")
>>> {'n': {'elects', 'electives', 'electors', 'elect', 'eligibilities', 'electorates', 'eligibility', 'elector', 'election', 'elections', 'electorate', 'elective'},
     'a': {'eligible', 'electoral', 'elective', 'elect'},
     'v': {'electing', 'elects', 'elected', 'elect'},
     'r': set()}
>>> get_word_forms("politician")
>>> {'n': {'politician', 'politics', 'politicians'},
     'a': {'political'},
     'v': set(),
     'r': {'politically'}}
>>> get_word_forms("am")
>>> {'n': {'being', 'beings'},
     'a': set(),
     'v': {'was', 'be', "weren't", 'am', "wasn't", "aren't", 'being', 'were', 'is', "isn't", 'been', 'are', 'am not'},
     'r': set()}
>>> get_word_forms("ran")
>>> {'n': {'run', 'runniness', 'runner', 'runninesses', 'running', 'runners', 'runnings', 'runs'},
     'a': {'running', 'runny'},
     'v': {'running', 'run', 'ran', 'runs'},
     'r': set()}
>>> get_word_forms('continent', 0.8) # with configurable similarity threshold
>>> {'n': {'continents', 'continency', 'continences', 'continent', 'continencies', 'continence'},
     'a': {'continental', 'continent'},
     'v': set(),
     'r': set()}

如您所见,输出是一个包含四个键的字典。"r"代表副词,"a"代表形容词,"n"代表名词,"v"代表动词。不要问我为什么"r"代表副词。这是WordNet使用的,因此我也使用它 :-)

可以通过键入以下内容在任何时间获得帮助

>>> help(get_word_forms)

为什么?

在自然语言处理和搜索中,人们经常需要将“run”和“ran”、“love”和“lovable”或“politician”和“politics”等单词视为同一个单词。这通常是通过算法将每个单词减少到基词然后比较基词来完成的。这个过程称为词干提取。例如,Porter词干提取器将“love”和“lovely”都减少到基词“love”。

词干提取器存在几个缺点。首先,词干提取器生成的基词不总是有效的英语单词。例如,Porter词干提取器将单词"operation"缩减为"oper"。其次,词干提取器具有较高的误判率。例如,"run"被缩减为"run",而"ran"也被缩减为"ran"。这是因为词干提取器使用一组合理的规则来查找基词,而众所周知,英语语言并不总是非常理性。

词元化器比词干提取器更准确,因为它们产生的基词是词典中存在的(也称为词元)。因此,缩减后的单词总是有效的英语单词。然而,词元化器也存在误判,因为它们不擅长连接不同词性的单词。NLTK附带的WordNet词元化器在这些例子中几乎都失败了。"operations"被缩减为"operation",而"operate"被缩减为"operate"。

Word Forms通过找到给定英语单词的所有可能形式来解决此问题。它可以执行动词变位、将名词形式与动词形式、形容词形式、副词形式连接,以及将单数形式变为复数形式等。

额外功能:简单的词元化器

我们还提供了一个基于word_forms的非常简单的词元化器。以下是使用方法。

>>> from word_forms.lemmatizer import lemmatize
>>> lemmatize("operations")
'operant'
>>> lemmatize("operate")
'operant'

享受吧!

兼容性

在Python 3上进行了测试

安装

使用pip

pip install -U word_forms

从源代码

或者您可以从源代码安装它

  1. 克隆仓库
git clone https://github.com/gutfeeling/word_forms.git
  1. 使用pipsetup.py安装
pip install -e word_forms
% or
cd word_forms
python setup.py install

致谢

  1. XTAG项目提供有关动词变位的信息。
  2. WordNet

维护者

嗨,我是Dibya,我维护这个仓库。我很乐意听到您的意见。您可以通过dibyachakravorty@gmail.com与我联系。

贡献者

  • Tom Aarsen @CubieDev是主要贡献者,并单独负责v2.0.0。
  • Sajal Sharma @sajal2692是主要贡献者。

贡献

Word Forms并不完美。特别是,有一些方面可以改进。

  1. 有时它会生成非词典单词,如"runninesses",因为复数化/单数化算法并不完美。目前,我正在使用inflect

如果您喜欢这个包,请随时贡献。您的拉取请求非常受欢迎。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码发行版

word_forms-2.1.0.tar.gz (6.8 kB 查看哈希值)

上传时间: 源代码

构建发行版

word_forms-2.1.0-py3-none-any.whl (166.3 kB 查看哈希值)

上传时间: Python 3

支持者