Python 如何从Spacy库中的哈希值获取字符串?
我在spaCy图书馆从事自然语言处理工作。如何从散列中获取字符串值 下面是我在python中使用spaCy库编写的详细代码 注意——这个问题主要与spaCy库有关,而不是pythonPython 如何从Spacy库中的哈希值获取字符串?,python,nlp,spacy,Python,Nlp,Spacy,我在spaCy图书馆从事自然语言处理工作。如何从散列中获取字符串值 下面是我在python中使用spaCy库编写的详细代码 注意——这个问题主要与spaCy库有关,而不是python # import spacy package for english language from spacy.lang.en import English # initialize nlp with English nlp = English() # get hash from string cat_hash
# 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)
这很有趣
nlp.vocab.strings
不包含英语语言的所有单词。
len(nlp.vocab.strings)
显示那里只有1009个单词-主要是虚词:代词、辅助动词等。你可以用
for s in nlp.vocab.strings:
print(s)
现在,您仍然可以使用nlp.vocab.strings[“cat”]
请求哈希值,但它不会向字符串添加“cat”,只返回其哈希值。这就是为什么查找nlp.vocab.strings[cat_hash]
不起作用的原因——“cat”不在那里,它的hash也不在那里
通常,散列不是唯一的,因此不可反转。现在,您可以将word添加到StringStore(它得到的哈希值与独立于StringStore的哈希值相同),然后您就可以查找它了
>>> cat_hash = nlp.vocab.strings.add("cat")
>>> cat_hash
5439657043933447811
>>> nlp.vocab.strings[5439657043933447811]
'cat'
另外,您可能希望使用的是nlp.vocab
,而不是nlp.vocab.strings
<如果字典中没有字符串,则code>nlp.vocab会创建新条目,并且可以与哈希一起使用。但是,它不返回散列,而是返回一个Lexeme
,它具有text
和orth
属性
>>> dog=nlp.vocab["dog"]
>>> dog.text
'dog'
>>> dog.orth
7562983679033046312
>>> nlp.vocab[7562983679033046312].text
'dog'
>>>