首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Spacy库中的哈希值中取回字符串?

如何从Spacy库中的哈希值中取回字符串?
EN

Stack Overflow用户
提问于 2020-05-18 16:39:11
回答 1查看 321关注 0票数 0

我正在使用spaCy库从事自然语言处理。如何从散列中取回字符串值?

下面是我用python编写的spaCy库的详细代码

注意-这个问题主要是关于spaCy库的,而不是python。

代码语言:javascript
复制
# import spacy package for english language
from spacy.lang.en import English

# initialize nlp with English
nlp = English()

# get hash from string
cat_hash = nlp.vocab.strings["cat"]
print(cat_hash)

# Look up the cat_hash to get the string
cat_string = nlp.vocab.strings[cat_hash]
print(cat_string)
EN

回答 1

Stack Overflow用户

发布于 2020-05-18 22:04:06

这很有趣。nlp.vocab.strings并不包含英语中的所有单词。len(nlp.vocab.strings)透露,这里只有1009个单词-主要是功能词:代词,辅助动词等。你可以用以下命令查看它们

代码语言:javascript
复制
for s in nlp.vocab.strings:
     print(s)

现在,您仍然可以使用nlp.vocab.strings["cat"]请求散列值,但它不会将"cat“添加到字符串中,而只是返回它的散列值。这就是查找nlp.vocab.strings[cat_hash]不起作用的原因--“猫”不在那里,它的散列也不在那里。

一般而言,哈希不是唯一的,因此是不可逆的。现在,您可以将单词添加到StringStore (它将获得与独立于StringStore的hash ins相同的散列),然后您就可以查找它了

代码语言:javascript
复制
>>> cat_hash = nlp.vocab.strings.add("cat")
>>> cat_hash
5439657043933447811
>>> nlp.vocab.strings[5439657043933447811]
'cat'

附注:也许,您想要使用的是nlp.vocab而不是nlp.vocab.strings。如果字典中没有该字符串,nlp.vocab会创建新的条目,它也可以与散列一起使用。但是,它返回的不是散列,而是一个具有textorth属性的Lexeme

代码语言:javascript
复制
>>> dog=nlp.vocab["dog"]
>>> dog.text
'dog'
>>> dog.orth
7562983679033046312
>>> nlp.vocab[7562983679033046312].text
'dog'
>>>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61865627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档