文章为自己的实践记录及总结,多有疏忽,恐有错误......
文本特征提取是基于特征向量的自然语言处理方法的基本技术,常用的提取自文本的特征主要包括词汇特征、位置特征、句法特征、语义特征。其中,词汇特征包括词性、上下文词汇、命名实体等;位置特征如命名实体之间的间隔距离;句法特征提取主要包括句法分析及依存句法分析。常用的特征获取工具有StanfordNLP和LTP(哈工大社会计算与信息检索研究中心研发的语言技术平台),支持中英文在内的多种语言,目前nltk中提供了Standford NLP的几个功能:分词,词性标注,命名实体识别,句法分析,依存句法分析等,本文主要记录其安装使用方法。
词性标注 标注解释
# 分词,text_raw为单句
text = nltk.word_tokenize(text_raw)
# 去掉标点符号
english_punctuations = [',', '.', ':', ';', '?', '(', ')', '[', ']', '&', '!', '*', '@', '#', '$', '%']
text = [w for w in text if w not in english_punctuations]
# 去或不去停用词
# filtered = [w for w in text if w not in stopwords.words('english')]
rfiltered = nltk.pos_tag(text)
命名实体识别
参考 tips:单词的大小写直接影响识别结果
nltk.ne_chunk(pos(texts)[13],binary=False)
# 输入参数tagged_tokens是词性标注后的列表形式 ,默认binary:false,输出形式为<class 'nltk.tree.Tree'>
# 用列表存储
ner_list = []
for text in pos(texts):
tree_list = []
for tree in nltk.ne_chunk(text, binary=False).subtrees():
# 过滤根树
if tree.label() == "S":
continue
tree_list.append(tree)
ner_list.append(tree_list)
依存句法分析(依存树)
nltk没有提供好的parser,推荐使用standfordparser
在nltk中使用Standford NLP工具包:https://www.jianshu.com/p/4b3c7e7578e6
# from nltk.parse.stanford import StanfordParser
# from nltk.parse.stanford import StanfordDependencyParser
from nltk.parse.corenlp import CoreNLPParser
parser = CoreNLPParser(r'')
parse_result = parser.parse(nltk.word_tokenize(text))
parser = StanfordDependencyParser(model_path=u'')
res = parser.parse(text)