鲁WordNet词库的Python包装器。
项目描述
python-ruwordnet
这是一个RuWordNet词库的Python包装器。
这是RuWordNet的Python包装器。
目前支持2021年的版本(RuWordNet 2.0):59905个同义词(意义群),154111个单词和词组的值。
类似和相关的项目
- https://www.nltk.org/howto/wordnet.html(原始的英文Wordnet)
- https://github.com/jamsic/ru-wordnet(从wiktionary提取的俄语词库)
- https://nlpub.ru/Russian_Distributional_Thesaurus#Гиперонимы(通过在大型语料库中使用自动启发式方法收集的俄语词库)
这是什么
RuWordNet是少数几个俄语词库之一。
词库是一种机器可读的某种语言的词典,由语言学家编制,包含关于词语之间关系的详细信息。
RuWordNet分为同义词集(同义词集合)——一组同义词和词组。同义词集之间建立了二元关系,如下位词-上位词,即“部分-整体”。例如,“芦笋”是“蔬菜”的一个特殊情况。这种对同义词和上位词的标记允许以比word2vec和其他分布语义学更高的可靠性(至少在理论上是如此)来建立词语之间的关系。
词库中的主要实体是Sense
(意义)——一个具有特定含义的具体单词或词组,以及Synset
(同义词集)——具有相同值和相同词性的多个Sense
的集合。支持三种词性:名词N
、动词V
和形容词A
。一些Sense
由多个单词组成,并且根据主要单词分配词性。
当前版本词库支持以下同义词集之间的关系
hyponyms
/hypernyms
:更具体和更一般的概念,例如,“芦笋”/“蔬菜”domains
/domain_items
:领域及其属性,例如,“体育” / “足球”meronyms
/holonyms
:部分和整体,例如,“橡树” / “橡树”classes
/instances
:类别和实例,例如,“斯摩棱斯克” / “州府”premises
/conclusions
:前提和由此产生的可能结论,例如,“跑” / “奔跑”(仅适用于动词)causes
/effects
:原因和结果,例如,“拥挤” / “堵塞”(仅适用于动词)pos_synonyms
:来自其他词类的同义词antonyms
:反义词related
:其他语义联系,例如,“蔬菜” / “蔬菜仓库”ili
:跨语言索引,即另一种语言(英语)中的同义词集
此外,还存在语义之间的关系
words
/phrases
- 由哪些单词组成短语,以及哪些短语包含该单词,例如,“感觉” / “情感爆发”sources
/derivations
- 由哪些单词产生该词,以及哪些由此产生,例如,“朋友” / “友情”
在本软件包中,词库被封装在ORM SQLAlchemy
中。这意味着您可以将内容下载为sqlite文本数据库,或者将其导入自己的数据库。
如何启动
要使用词库,请选择以下两种选项之一
- 或者克隆此存储库;
- 或者安装软件包并下载包含词库的文件(约80MB)
pip install ruwordnet
ruwordnet download
目前存在几个词库版本
- 2020年版本包含在文件
ruwordnet/static/ruwordnet.db
中,并从软件包版本ruwordnet>=0.0.2
开始提供。 - 2021年版本(RuWordNet 2.0)包含在文件
ruwordnet/static/ruwordnet-2021.db
中,并从软件包版本ruwordnet>=0.0.4
开始默认提供。在这个版本中,词汇量有所增加,并为同义词集添加了related
(与其他同义词集的任意联系)和ili
(跨语言索引,即与英语WordNet的联系)属性。
要应用此软件包,需要创建一个 RuWordNet
对象
from ruwordnet import RuWordNet
wn = RuWordNet()
如果您未使用 ruwordnet download
命令,您可以自行指定文件路径,或者将打开的 SQLAlchemy 会话传递给构造函数
from ruwordnet import RuWordNet
wn = RuWordNet(filename_or_session='ruwordnet/static/ruwordnet-2021.db')
之后,您可以进行搜索,查找包含该单词的同义词
for sense in wn.get_senses('замок'):
print(sense.synset)
# Synset(id="126228-N", title="СРЕДНЕВЕКОВЫЙ ЗАМОК")
# Synset(id="114707-N", title="ЗАМОК ДЛЯ ЗАПИРАНИЯ")
对于每个同义词,可以查看其上位词...
wn.get_senses('спаржа')[0].synset.hypernyms
# [Synset(id="348-N", title="ОВОЩИ"),
# Synset(id="4789-N", title="ТРАВЯНИСТОЕ РАСТЕНИЕ"),
# Synset(id="6878-N", title="ОВОЩНАЯ КУЛЬТУРА")]
...或者相反,查看下位词
vegetables = wn.get_senses('спаржа')[0].synset.hypernyms[0]
vegetables.hyponyms
# [Synset(id="107993-N", title="АРТИШОК"),
# Synset(id="108482-N", title="СПАРЖА"),
# Synset(id="118660-N", title="ЗЕЛЕНЫЙ ГОРОШЕК"),
# ...
词库搜索
通过使用方括号调用 RuWordNet
对象,可以提取俄语和英语的同义词(按id)和意义(按id或文本)。
wn['134045-N']
# Synset(id="134045-N", title="ПОТЕНЦИАЛ (ФИЗИЧЕСКАЯ ВЕЛИЧИНА)")
wn['11493827-n']
# WNSynset(id="11493827-n", definition="the difference in electrical charge between two points in a circuit expressed in volts")
wn['134045-N-189287']
# Sense(id="134045-N-189287", name="ПОТЕНЦИАЛ")
wn['electric_potential%1:19:00::']
# WNSense(key="electric_potential%1:19:00::", name="electric_potential")
wn['потенциал']
# [Sense(id="134045-N-189287", name="ПОТЕНЦИАЛ"), Sense(id="134046-N-189287", name="ПОТЕНЦИАЛ")]
wn['potential']
# [WNSense(key="potential%1:19:00::", name="potential"), WNSense(key="potential%3:00:00::", name="potential"), WNSense(key="potential%1:26:00::", name="potential")]
此外,还有专门的方法用于搜索俄语或英语的同义词和值。
wn.get_synset_by_id("134045-N")
wn.get_en_synset_by_id("11493827-n")
wn.get_senses('потенциал')
wn.get_synsets('потенциал')
wn.get_en_senses('potential')
wn.get_en_synsets('potential')
警告:对于英语WordNet,仅显示与RuWordNet相关的元素。
更多示例使用可在本存储库的.ipynb文件中找到。
项目详情
ruwordnet-0.0.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 76dc67b52934dee5900bd0f064b2752be6b5de09e0332168b556fbc7d42cf22b |
|
MD5 | e1230c867b08474e862de8fc01da28fa |
|
BLAKE2b-256 | 37aca5f31f8a26105a5dc3250bf6d574288e3a928c9a8ffe2bc8955e2fb3fded |