Spacy的一些用法留档(有待更新)

Spacy的一些用法:

# 分词
nlp = spacy.load("zh_core_web_sm")
doc = nlp(u'中国是世界上最大的发展中国家')
for token in doc:
    print(token)

    
# 另一种分词(不分割特有名词)
nlp = spacy.load("zh_core_web_sm")
# 添加自定义词汇
nlp.tokenizer.pkuseg_update_user_dict(["南京长江大桥","金陵四十景"]) # 防止将特定词汇分割

doc = nlp("南京长江大桥是金陵四十景之一!")
for token in doc:
    print(token.text)
# 判定实体类别1 查找实体在文本段中(字符串)的位置,
nlp = spacy.load("zh_core_web_sm")
# 添加自定义词汇
nlp.tokenizer.pkuseg_update_user_dict(["东方明珠"])

# 自定义词汇可能不会进入实体识别。
doc = nlp("东方明珠是一座位于中国上海市的标志性建筑,建造于1991年,是一座高度为468米的电视塔。")
for ent in doc.ents:
    # 实体文本,开始位置,结束位置,实体标签
    print(ent.text, ent.start_char, ent.end_char, ent.label_)

# result:
# 中国上海市 (位置 9 到 14,标签 GPE)
# 文本:中国上海市
# 开始位置:9
# 结束位置:14
# 标签:GPE(地理政治实体,Geopolitical Entity),表示地名。
# 查找相关性
import numpy as np
import spacy
nlp = spacy.load("zh_core_web_sm")
doc1 = nlp("东方明珠是一座位于中国上海市的标志性建筑")
doc2 = nlp("南京长江大桥是金陵四十景之一!")
# 获取doc1和doc2的词向量
vec1 = doc1.vector
vec2 = doc2.vector

# 使用NumPy计算相似度得分,np.linalg.norm(vec1)就是doc1.vector_norm
similarity_score = np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2))

print(doc1, "<->", doc2,similarity_score)
#判定实体类别2 只是更换了输出格式,使其更加清晰

model = spacy.load('zh_core_web_sm')
entitles = []
doc = model('【郑渝高铁首发,南阳日报社记者带你沿线游】#郑渝高铁 现代化“副中心”建设新支撑# #郑渝高铁全线贯通# #郑渝高铁开通首发# 6月20日上午的在郑渝高铁首发车上,省人大代表马金霞接受南阳日报社记者采访。')
for entity in doc.ents:
    entitles.append(str(entity)+ ':' + str(entity.label_))
print(entitles)
posted @ 2024-10-20 11:35  Akimizuss101  阅读(14)  评论(0编辑  收藏  举报