nlp.vocab.strings
存储一次;coffee_hash = nlp.vocab.strings["咖啡"]
coffee_string = nlp.vocab.strings[coffee_hash]
nlp.vocab.strings
中查找字符串和哈希值doc = nlp(text)
print("hash_value", nlp.vocab.strings["咖啡"])
print("string_value", nlp.vocab.strings[7689890])
doc = nlp(text)
print("hash value", doc.vocab.strings["咖啡"])
**ps:**要拿到字符串的哈希值,需要在nlp.vocab.strings
中查找;要拿到一个哈希值的字符串形式,可以查询哈希值;
doc = nlp("我想喝咖啡")
lexeme = nlp.vocab["咖啡"]
print(lexeme.text, lexeme.orth, lexeme.is_alpha)
lexeme实例中包含一个词和与语境无关的信息:词组的文本(lexeme.text, lexeme.orth)、词汇的属性(lexeme.is_alpha),但是不包含和语境相关的词性标注、依存关系和实体标注;
from spacy.token import Doc, Span
words = ["Hello", "world", "!"]
spaces = [True, False, False]
doc = Doc(nlp.vocab, words=words, spaces=spaces)
span = Span(doc, 0, 2)
span_with_label = Span(doc, 0, 2, label = "GREETING")
doc.ents = [span_with_label]
span.similarity(doc)
;统计模型 | 规则系统 | |
---|---|---|
使用场景 | 需要根据例子来泛化应用 | 有限个例子组成的字典 |
真实范例 | 产品名,人名,主宾关系 | 世界上的国家,城市,药品名,狗的种类 |
spacy的功能 | 实体识别器,依存关系识别器,词性标注器 | 分词器,matcher,phrasematcher |
from spacy.matcher import Matcher
matcher = Matcher(nlp.vocab)
pattern = [{"LEMMA": "love", "POS": "VERB"}, {"LOWER": "cat"}]
matcher.add("LOVE_CATS", None, pattern)
pattern = [{"TEXT": "very", "OP": "+"}, {"TEXT": "happy"}]
matcher.add("VERY_HAPPY", None, pattern)
doc = nlp("I love cats and I'm very very happy")
matches = matcher(doc)
example:
遍历matcher返回的匹配结果,将得到匹配ID以及匹配到的span的起始和终止索引。我们可以利用他们获得更多的信息。span实例让我们可以读取原始文档以及所有预测出来的词符属性和语言特征。
matcher = Matcher(nlp.vocab)
matcher.add("DOG", None, [{"LOWER": "golden"}, {"LOWER": "retriever"}])
doc = nlp("I have a Golden Retriver")
for match_id, start, end in matcher(doc):
span = doc[start:end]
print(span.text)
print(span.root.text)
from spacy.matcher import PhraseMatcher
matcher = PhraseMatcher(nlp.vocab)
pattern = nlp("Golden Retriver")
matcher.add("DOG", None, pattern)
doc = nlp("I have a Golden Retriver")
for match_id, start, end in matcher(doc):
span = doc[start:end]
print(span.text)