跳转到主要内容

鲁WordNet词库的Python包装器。

项目描述

python-ruwordnet

这是一个RuWordNet词库的Python包装器。

这是RuWordNet的Python包装器。

目前支持2021年的版本(RuWordNet 2.0):59905个同义词(意义群),154111个单词和词组的值。

类似和相关的项目

这是什么

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文本数据库,或者将其导入自己的数据库。

如何启动

要使用词库,请选择以下两种选项之一

  1. 或者克隆此存储库;
  2. 或者安装软件包并下载包含词库的文件(约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 (16.4 kB 查看哈希值

上传时间

支持者