将spaCy int属性映射为字符串(unicode)属性

时间:2019-04-01 11:16:28

标签: spacy

对于许多令牌属性,例如词性和依赖关系,spaCy既存储整数属性又存储字符串属性。例如,对于POS,有pos_(如“ PUNCT”和“ ADJ”之类的字符串)和pos(整数值)属性。令牌属性的完整列表为here

是否有一种方便的方法可以在两种表示形式之间直接转换?具体来说,如果我有POS整数值,是否有办法知道对应的字符串是什么?

使用count_by API(请参阅here)时遇到了这个问题,该API对属性频率进行计数并返回整数属性及其计数的字典。一个例子:

>>> doc = nlp("I like natural language processing.")
>>> doc.count_by(spacy.attrs.POS)
{96: 1, 99: 1, 83: 1, 91: 2, 94: 1}

是否可以为每个POS密钥获取相应的字符串?

当然,还有其他使用字符串属性进行计数的方法。但是我的问题比这个示例应用程序更笼统。

1 个答案:

答案 0 :(得分:2)

是的,它是doc.vocab.strings处的查找表。您可以使用例如查找字符串值或其哈希值doc.vocab.strings["VERB"]doc.vocab.strings[VERB]。如果您有字符串并需要哈希,请使用spacy.strings.get_string_id()函数。散列字符串是无状态的,因此不需要StringStore

还可以使用spacy.attrs.IDSspacy.symbols.IDS全局变量来取消引用内置符号。