自然语言处理的基本概念--结合spacy软件的学习

基本概念

  • doc: 表示document的缩写,可以结构化地读取文本相关的信息,并且不会产生丢失
doc = nlp(text)
for token in doc:
	print(token.text)
  • token表示文本中的字符,比如一个词或者一个标点符号。要读取某个位置的词符,可以直接使用doc的索引;token中也会包含很多属性,比如.text就会输出对应的原文;
doc = nlp(text)
token = doc[1]
print(token.text)
  • span实例是文本中包含了一个或者更多字符的一段截取,仅仅是Doc的一个视图不包含实际的数据;
doc = nlp(text)
span = doc[1:3]
print(span.text)

统计模型

介绍:从语境中抽取到的语言学属性,包括:词性标注、依存关系解析、命名实体识别;
从标注过的文本中训练而来;
可以使用更多的标注数据来更新模型,优化抽取结果;
模型包括:二进制权重(用于进行属性预测),词汇表和元信息(配置spacy语言类以及相应的处理流程组件);
在不了解属性的时候,可以使用spacy.explain("对应属性名称")来查找对应的属性含义;

基于规则的匹配抽取

基于Doc对象而不是直接在字符串上进行匹配;
在词符和其属性上进行匹配;
会使用到模型的预测结果;

模板匹配

一个元素是字典的列表,一个字符是一个元素

  • 匹配词符完全一致的文字
[{"TEXT": "iPhone"}, {"TEXT": "X"}]
  • 匹配词汇属性
[{"LOWER": "iphone"}, {"LOWER": "x"}]
  • 匹配任意的词符属性
[{"LEMMA": "buy"}, {"POS": "NOUN"}]

example:

import spacy
from spacy.matcher import Matcher
nlp = spacy.load("zh_core_web_sm")
matcher = Matcher(nlp.vocab)
pattern = nlp(text)
matches = matcher(doc)
for match_id, start, end in matches:
	matched_span = doc[start:end]
	print(matched_span.text)

匹配词汇属性

找出五个字符:
一个只含有数字的字符;
三个匹配到“国际”,“足联”和“世界杯”的词符;
一个标点符号词符;

pattern = [
		{"IS_DIGIT": True},
		{"LOWER": "国际"},
		{“”LOWER“: "足联”},
		{"LOWER": "世界杯"},
		{"IS_PUNCT": True}
]

匹配其他词符属性

寻找两个词符:
一个词根是“喜欢”的动词,后面跟着一个名词

pattern = [
		{"LEMMA": "喜欢", "POS": ""VERB},
		{"POS": "NOUN"}
]

使用运算符和量词

使用运算符和量词来定义一个词符应该被匹配几次。可以用OP这个关键词进行添加。其中"?"运算符使得相应的判断词符变为可以选

pattern = [
		{"LEMMA": "买"},
		{"POS": "NUM", "OP": "?"},
		{"POS": "NOUN"}
]

自然语言处理的基本概念--结合spacy软件的学习_第1张图片

你可能感兴趣的:(自然语言处理)