NLP词性分析,实体分析,句法树构造(依存句法树分析)

您所在的位置:网站首页 sanity的形容词性 NLP词性分析,实体分析,句法树构造(依存句法树分析)

NLP词性分析,实体分析,句法树构造(依存句法树分析)

2023-10-09 06:30| 来源: 网络整理| 查看: 265

NLTK

使用nltk库进行英文文本处理

英文文本分词处理(NLTK)

分词、取出标点符号

由于英语的句子基本上就是由标点符号、空格和词构成,那么只要根据空格和标点符号将词语分割成数组即可,所以相对来说简单很多。

使用nltk中的方法:

word_tokenize        分割单词

sent_tokenize        分割句子

注意: NLTK分词或者分句以后,都会自动形成列表的形式

词性标注

说明: 列表中每个元组第二个元素显示为该词的词性,具体每个词性注释可运行代码”nltk.help.upenn_tagset()“或参看说明文档:NLTK词性标注说明

line是一句完整的话,实际上pos_tag是处理一个词序列,会根据句子来动态判断

import nltk from nltk.corpus import stopwords line = 'I love this world which was beloved by all the people here. I have lived here for 20 years' #分词 words = nltk.word_tokenize(line) print(words) #分句 sentences = nltk.sent_tokenize(line) print(sentences) #去除标点符号 interpunctuations = [',', '.', ':', ';', '?', '(', ')', '[', ']', '&', '!', '*', '@', '#', '$', '%'] #定义标点符号列表 cutwords = [word for word in words if word not in interpunctuations] #去除标点符号 print(cutwords) #去除停用词 stops = set(stopwords.words("english")) cutwords_stop = [word for word in cutwords if word not in stops] print(cutwords_stop) #词性标注 pos_tag = nltk.pos_tag(cutwords_stop) print(pos_tag) #命名实体识别 ners = nltk.ne_chunk(pos_tag) print(ners) #词干提取 #词性还原

词性标注表:Penn Treebank P.O.S. Tags (upenn.edu) 宾夕法尼亚大学的词性标注表

import nltk line = 'i love this world which was beloved by all the people here' tokens = nltk.word_tokenize(line) print(tokens) pos_tag = nltk.pos_tag(tokens) print(pos_tag) CC 并列连词 NNS 名词复数 UH 感叹词 CD 基数词 NNP 专有名词 VB 动词原型 DT 限定符 NNP 专有名词复数 VBD 动词过去式 EX 存在词 PDT 前置限定词 VBG 动名词或现在分词 FW 外来词 POS 所有格结尾 VBN 动词过去分词 IN 介词或从属连词 PRP 人称代词 VBP 非第三人称单数的现在时 JJ 形容词 PRP$ 所有格代词 VBZ 第三人称单数的现在时 JJR 比较级的形容词 RB 副词 WDT 以wh开头的限定词 JJS 最高级的形容词 RBR 副词比较级 WP 以wh开头的代词 LS 列表项标记 RBS 副词最高级 WP$ 以wh开头的所有格代词 MD 情态动词 RP 小品词 WRB 以wh开头的副词 NN 名词单数 SYM 符号 TO to SpaCy

        使用SpaCy库进行英文文本处理, 不仅包含一些基本的文本处理操作、还包含一些预训练的模型以及词向量, 这些基本处理操作可以对我们的数据进行一些预处理,作为神经网络的输入。

        SpaCy具有快速的句法分析器,用于标签的卷积神经网络模型,解析和命名实体识别以及与深度学习整合。

#! pip install spacy import spacy #! python -m spacy download en_core_web_sm text = "Life on Earth depends on water." nlp = spacy.load('en_core_web_sm') doc = nlp(text) token = [token.text for token in doc] #每个token对象有着非常丰富的属性 for token in doc: print("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t".format( token.text, #单词 token.idx, #单词起始索引 token.is_punct, #是否为标点 token.lemma_, #单词词干 token.is_space, #是否为空格 token.pos_, #词性标注 token.tag_ )) ADJ:形容词,例如大,旧,绿色,难以理解的第一 ADP:位置,例如在,到,在 ADV:副词,例如非常,明天,下来,在那里,那里 AUX:辅助,例如是,已经(完成),将会(要做),应该(要做) CONJ:连词,例如和,或,但是 CCONJ:协调连词,例如和,或,但是 DET:确定器,例如一个,一个 INTJ:感叹词,例如psst,ouch,bravo,你好 NOUN:名词,例如女孩,猫,树,空气,美女 NUM:数字,例如1,2017,一,七十七,IV,MMXIV PART:粒子,例如不是 PRON:代词,例如我,你,他,她,我自己,自己,某人 PROPN:专有名词,例如玛丽,约翰,伦敦,北约,HBO PUNCT:标点符号,例如。,(,),? SCONJ:从属连词,例如如果,那,那 SYM:符号,例如$,%,§,?,+,?,×,÷,=,:),?? VERB:动词,例如奔跑,奔跑,奔跑,吃,吃,吃 X:其他,例如sfpksdpsxmsa SPACE:空格,例如 nsubj : nominal subject,名词主语 nsubjpass: passive nominal subject,被动的名词主语 dobj : direct object直接宾语 pobj : object of a preposition,介词的宾语

Stanford CoreNLP 50来种依存关系(Stanford typed dependencies) - 简书 (jianshu.com)

依存句法树 英文依存句法树

依存句法树并不关注如何生成句子这种宏大的命题。依存句法树关注的是句子中词语之间的语法联系,并且将其约束为树形结构。

依存句法理论

依存语法理论认为词与词之间存在主从关系,这是一种二元不等价的关系。在句子中,如果一个词修饰另一个词,则称修饰词为从属词(dependent),被修饰的词语称为支配词(head),两者之间的语法关系称为依存关系(dependency relation)。

箭头方向由支配词指向从属词(可视化时的习惯)。将一个句子中所有词语依存关系以有向边的形式表示出来,就会得到一棵树,称为依存句法树(dependency parse tree)。例如句子“Wall Street Journal just published an interesting piece on crypto currencies”的依存句法树如图所示。

SpaCy解析依存关系

在Jupyter Notebook中使用spaCy可视化中英文依存句法分析结果 - 知乎 (zhihu.com)

SpaCy能够快速准确地解析句子的依存关系, SpaCy使用head和child来描述依存关系中的连接,识别每个token的依存关系:

token.text: token的文本token.head: 当前token的Parent Token, 从语法关系上来看,每一个Token都只有一个Headtoken.dep_: 依存关系token.children: 语法上的直接子节点token.ancestors: 语法上的父节点_pos: 词性_tag: 词性 import spacy nlp = spacy.load('en_core_web_sm') doc = nlp("spaCy uses the terms head and child to describe the words") for token in doc: print('{0}({1})


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3