自然语言处理实战 利用Python理解、分析和生成文本,python基础语法个人笔记
计算机编程语言自然语言处理学习笔记(41):5.2 标注语料库5.2标记语料库标注语料库
表示标记的令牌表示标注的语言符号
按照自然语言工具包中的约定,标记的令牌使用由令牌和标记组成的元组来表示。我们可以使用函数str2tuple()从标记令牌的标准字符串表示中创建这些特殊元组之一:
tagged _ token=nltk标签。字符串2元组( fly/NN )
标记_令牌
(飞, NN )
标记的令牌[0]
"飞"
tagged_token[1]
恩
我们可以直接从字符串中构造一个标记令牌列表。第一步是对字符串进行标记化,以访问单个单词/标记字符串,然后将每个字符串转换为一个元组(使用str2tuple()).
已发送=
.大陪审团/JJ陪审团/NN于/年/月/日第/NN号评论了/VBD
.其他/美联社话题/NNS/,其中/其中在亚特兰大和/抄送
.富尔顿/NP-tl县/NN-tl采购部/VBG部门/NNS it/WDT it/PPS
.说/VBD ``/` 是/BER井/QL经营/VBN和/抄送跟随/VB一般/RB
.公认的/VBN的做法/NNS的做法/WDT的习惯/在/充其量/JJT
.双方/ABX政府/NNS的利益/NN / ./.
.
sent.split()中t的nltk。标签。字符串2元组(t)]
[(The , AT ),( grand , JJ ),( jury , NN ),( commented , VBD ),
( on , IN ),( a , AT ),( number , NN ),(., .)]
阅读标记语料库读取已标注的语料库
自然语言工具包包含的几个语料库已经被标注了词性。如果用文本编辑器打开褐色的语料库中的文件,您可能会看到以下示例:
/at Fulton/NP-TL County/nn-TL Grand/jj-TL Jury/nn-TL said/vbd Friday/NR an/at investigation/nn of/in Atlanta的/NP $ recent/jj初选/nn选举/nn产生/vbd/no/at evidence/nn / that/cs any/DTI违规行为/nns take/vbd place/nn/。
其他语料库使用各种格式来存储词性标签100 . NLTK的语料库阅读器提供了一个统一的接口,因此您不必担心不同的文件格式。与上面显示的文件摘录相比,棕色语料库的语料库阅读器显示的数据如下所示。请注意,词性标签已经转换为大写,因为这已经成为标准做法(标准惯例)自从布朗文集出版以来。
nltk.corpus.brown.tagged_words()
[(The , AT ),( Fulton , NP-TL ),( County , NN-TL ),]
nltk。语料库。棕色。tagged _ words(simplify _ tags=True)
[(The , DET ,(富尔顿、 N )、(县、 N ),]
每当语料库包含标记文本时,NLTK语料库接口将有一个标记的单词()方法。下面是更多的例子,同样使用褐色的语料库的输出格式:
打印nltk。语料库。NPS _ chat。标记的单词()
[(现在、 RB )、( im 、 PRP )、(左,‘VBD’),]
nltk。语料库。conll 2000。标记的单词()
[(Confidence , NN ),( in , IN ,( the , DT ),]
nltk。语料库。树木银行。标记的单词()
[(皮埃尔、 NNP )、(文肯、 NNP )、(、、、),]
不是所有的语料库都使用相同的标签集;有关文档,请参见上述标记集帮助功能和自述文件()方法。最初,我们希望避免这些标签集的复杂性,所以我们使用一个到简化标签集的内置映射:
nltk。语料库。棕色。tagged _ words(simplify _ tags=True)
[(The , DET ,(富尔顿、 NP )、(县、 N ),]
nltk。语料库。树木银行。tagged _ words(simplify _ tags=True)
[(皮埃尔、 NP )、(文肯、 NP )、(、、、),]
自然语言工具包发布了其他几种语言的标记语料库,包括中文、印地语、葡萄牙语、西班牙语、荷兰语和加泰罗尼亚语。这些通常包含非美国信息交换标准代码文本,Python在打印更大的结构(如列表)时总是以十六进制显示。
nltk。语料库。中国_树银行。标记的单词()
[(\xe4\xb8\x80 , Neu ),( \xe5\x8f\x8b\xe6\x83\x85 , Nad ),]
nltk。语料库。印度人。标记的单词()
[( \ xe0 \ xa6 \ xae \ xe0 \ xa6 \ xb9 \ xe0 \ xa6 \ xbf \ xe0 \ xa6 \ xb7 \ xe0 \ xa7 \ x87 \ xe0 \ xa6 \ xb0 , NN ),
( \ xe0 \ xa6 \ xb8 \ xe0 \ xa6 \ xa8 \ xe0 \ xa7 \ x8d \ xe0 \ xa6 \ xa4 \ xe0 \ xa6 \ xbe \ xe0 \ xa6 \ xa8 , NN ),
.]
nltk。语料库。MAC _ morpho。标记的单词()
[(Jersei , N ),( atinge , V ),( m\xe9dia , N ),]
nltk。语料库。conll 2002。标记的单词()
[(Sao , NC ),( Paulo , VMI ),((, Fpa ),]
nltk。语料库。塞斯猫。标记的单词()
[(El , da0ms0 ),( Tribunal_Suprem , np0000o ),]
如果您的环境设置正确,使用适当的编辑器和字体,您应该能够以人类可读的方式显示单个字符串。例如,图5.1显示了使用印度语访问的数据。
图5.1:来自四种印度语言的词性标注数据:孟加拉语、印地语、马拉地语和泰卢固语
如果语料库也被分割成句子,它将有一个tagged_sents()方法,将标记的单词分割成句子,而不是作为一个大列表呈现。当我们开始开发自动标记器时,这将是有用的,因为它们是在句子列表上训练和测试的,而不是单词。
一个简化的词性标记集简化的词性标记集合
标记语料库使用许多不同的惯例来标记单词。为了帮助我们开始,我们将看一个简化的标签集(如表5.1所示)。
标签
意义
例子
形容词
形容词
新、好、高、特殊、大、本地
副词
副词
真的,已经,仍然,早,现在
全国司法委员会
结合
并且,或者,但是,如果,虽然,虽然
方阵函数
限定词
一些,大多数,每一个,不
激励器
有关存在的
那里,那里
转发
外来词
dolce,ersatz,esprit,quo,maitre
现代的
情态动词
将要,能够,会,可能,必须,应该
普通
名词
年份、家庭、成本、时间、教育
公证人
专有名词
艾莉森,非洲,四月,华盛顿
全国矿工联合会
数字
二十四、第四,1991年,14:24
专业人员
代词
他,他们,她,它,我,我,我们
P
介词
在…上,在…处,与…一起,由…进入…之下
到
单词到
到
哦
感叹词
啊,砰,哈,whee,hmpf,哎呀
V
动词
是,有,得到,做,制造,看见,跑
性病
过去式
说,拿,说,做,问
很好
现在分词
制造,去,玩,工作
越南
过去分词
给予,获得,开始,歌唱
瓦特小时(瓦特小时)
瓦特小时确定符
谁,哪个,什么时候,什么,哪里,如何表5.1:
简化的词性标记集
让我们看看这些标签中哪些是布朗语料库的新闻类别中最常见的:
来自nltk.corpus导入棕色
brown _ news _ tagged=brown。tagged _ words(categories=新闻,simplify_tags=True)
tag_fd=nltk .频率分布(布朗新闻标记中(单词、标签)的标记)
tag_fd.keys()
[N , P , DET , NP , V , ADJ ,,, CNJ ,普罗, ADV , VD ,]
注意
轮到你了:使用tag_fd.plot(累积=真)绘制上述频率分布。使用上面列表的前五个标签标记的单词的百分比是多少?60%
我们可以使用这些标签,通过一个图形化的词性一致工具nltk.app.concordance()进行强大的搜索。使用它来搜索单词和位置标签的任意组合,例如N N N N N、hit/VD、hit/VN或形容词人。
名词名词
名词一般指人、地方、事物或概念,例如:女人、苏格兰、书、智力。名词可以出现在限定词和形容词之后,可以是动词的主语或宾语,(名词可以出现在限定词和形容词之后,并且可以做动词的主语或宾语)如表5.2所示。
单词
限定词之后
动词的主语
妇女
我昨天见到的那个女人.
女人坐下
苏格兰
我小时候记忆中的苏格兰.
苏格兰有五百万人口
书
我昨天买的那本书.
这本书讲述了澳大利亚的殖民历史
智力
孩子表现出的聪明才智.
玛丽的聪明给她的老师留下了深刻的印象表5.2:
涉及一些名词的句法模式
对于书这样的普通名词,简化的名词标签是n,对于苏格兰这样的专有名词,简化的名词标签是NP .
让我们检查一些带标签的文本,看看名词前出现的词类,首先是最常用的词类。首先,我们构建一个二元模型列表,其成员本身是词标记对,如((‘The’,‘DET’,(’富尔顿, NP ))和((富尔顿、 NP )、( County 、 N ).然后我们从二元模型的标签部分构造一个频率分布.
word _ tag _ pairs=nltk。二元模型(布朗新闻标签)
列表(nltk .FreqDist(a[1] for (a,b)in word _ tag _ pairs if b[1]= N ))
[DET , ADJ , N , P , NP , NUM , V , PRO , CNJ ,, VG , VN ,]
(甲、乙)也就是(( The , DET ,(富尔顿, NP ),如果b[1]==N ,则给出前面这个词的词性a[1]
这证实了我们的断言,名词出现在限定词和形容词之后,包括数字形容词(标记为编号).
动词动词
动词是描述事件和动作的词,例如秋季,可食用5.3 .在句子的上下文中,动词通常表达涉及一个或多个名词短语的所指对象的关系。
单词
简单的
带修饰语和附加语(斜体)
秋天
罗马陷落了
网络公司的股票像石头一样坠落
吃
老鼠吃奶酪
约翰津津有味地吃着比萨饼。
涉及某些动词的句法模式
新闻文本中最常见的动词有哪些?让我们把所有的动词按频率排序:
wsj=nltk。语料库。树木银行。tagged _ words(simplify _ tags=True)
word_tag_fd=nltk .华尔街日报
单词标签功能中(单词、标签)的[单词/标记if tag.startswith(V)]
[是/V ,表示/VD , was/VD , are/V , be/V , has/V , has/V ,表示/V ,
were/VD , had/VD , been/VN , s/V , do/V , say/V , make/V , did/VD ,
rose/VD , does/V , expected/VN , buy/V , take/V , get/V , sell/V ,
help/V , added/VD , including/VG , accounting/VG , made/VN , pay/V ,]
注意,在频率分布中被计数的项目是词-标签对。由于单词和标签是成对的,我们可以将单词视为条件,将标签视为事件,并用条件-事件对的列表来初始化条件频率分布。这让我们看到给定一个单词的标签的频率排序列表:
cfd1=nltk .条件要求分布(华尔街日报)
让步,让步.按键()
[V , N]
cfd1[切].按键()
[V , VD , N , VN]
我们可以颠倒配对的顺序,这样标签就是条件,单词就是事件(词作为条件,标签作为事件).现在我们可以看到给定标签的可能单词:
cfd2=nltk .ConditionalFreqDist((标签,单词)用于WallStreetJournal(美国)《华尔街日报》中的(单词,标签))
越南盾.按键()
[被,预期,制造,比较,基于,定价,使用,销售,
命名,设计,持有,罚款,占用,支付,交易,表示,]
为了明确VD(过去式)和越南(过去分词)之间的区别,让我们找到既可以是性病又可以是越南的单词,并查看一些周围的文本:
[如果cfd1[w]中的"性病"和cfd1[w]中的“VN”,则为cfd1.conditions()中的w]
[要求,加速,接受,指控,获得,添加,采纳,]
idx1=wsj.index((踢开, VD ))
华尔街日报
[(While , P ,( program , N ),( trades , N ),( quickly , ADV ),
(踢, VD)]
idx2=wsj.index((踢开, VN ))
华尔街日报
[(head , N ),( of , P ),( state , N ),( has , V ),( kicked , VN)]
在这种情况下,我们看到ofkickedis的过去分词前面有助动词有的形式。一般都是这样吗?
注意
轮到你了:给出cfd2[VN]指定的过去分词列表. keys(),尝试收集列表中紧接在项目前面的所有单词标签对的列表。
形容词和副词形容词和副词
另外两个重要的词类是形容词和副词。形容词描述名词,可以用作修饰语(如大比萨饼中的大),也可以用作谓语(如比萨饼很大)。英语形容词可以有内部结构(如下跌的股票.副词修饰动词,以指明动词所描述的事件的时间、方式、地点或方向(例如:股票迅速下跌)。副词也可以修饰形容词(如真的假的的老师真好)。
除了介词之外,英语还有几类封闭的词类,如冠词(也称为决定词)(如the,a)、情态动词(如应该,可能)和人称代词(如她,他们).每个字典和语法对这些词的分类都不一样。
注意
轮到你了:如果你对这些词类不确定,可以使用nltk.app.concordance()来研究它们,或者观看一些学校摇滚!语法视频可以在油管(国外视频网站)上找到,或者查阅本章末尾的延伸阅读部分。
未简化的标签未简化的标签
我们来找出每个名词词性类型中出现频率最高的名词。例5.2中的程序找到了所有以神经网络开头的标签,并为每个标签提供了几个例句。你会看到神经网络有很多变种;最重要的包含$表示所有格名词,S表示复数名词(因为复数名词通常以移民局结尾),P表示专有名词。此外,大多数标签都有后缀修饰符:-NC表示引用,-HL表示标题中的单词,-TL表示标题(棕色标签的一个特性)。
def findtags(tag_prefix,tagged_text):
cfd=nltk .标记文本中(单词,标签)的ConditionalFreqDist((标签,单词)
if tag.startswith(tag_prefix))
返回字典((标签,CFD[标签])。计算流体动力学条件()中标记的keys()[:5])
tagdict=findtags(NN ,nltk。语料库。棕色。tagged _ words(类别=新闻))
对于排序后的标签(tagdict):
.打印标签
.
NN [年,时间,州,周,人]
NN$ [年份,世界,州,国家,公司]
NN$-HL [高尔夫,海军]
NN$-TL [总统的,大学的,联盟的,画廊的,军队的]
NN-HL [削减,薪资,条件,问题,业务]
NN-NC [eva , ova , aya]
NN-TL [总统,众议院,州,大学,城市]
NN-TL-HL [堡垒,城市,专员,格罗夫,房子]
NNS [年,成员,人,销售,男人]
NNS$ [儿童,妇女,男子,门卫,纳税人]
NNS$-HL [经销商,偶像 ]
NNS$-TL [妇女,国家,巨人,军官,轰炸机]
NNS-HL [岁月,偶像,创作,感谢,中心]
NNS-TL [国家,民族,主人,规则,共产主义者]
NNS-TL-HL [国家]
示例5.2 (code_findtags.py):查找最常用名词标签的程序
当我们在本章后面构造词性标记时,我们将使用未简化的标记。
探索标记语料库探索标注的语料库
让我们简单地回到我们在前几章看到的对语料库的各种探索,这次是利用词性标签。
假设我们正在学习单词通常,想看看它在文本中是如何使用的。我们可以经常要求看后面的单词
布朗_博学_文本=布朗。单词(类别=已学)
排序(在nltk中为(a,b)设置(b。ibi grams(brown _ learned _ text)if a== occurrent ))
[,, .,完成,分析地,出现,恰当,关联,假设,
变成了,变成了,被了,开始了,叫,小心翼翼,选择了,]
但是,使用标记的单词()方法查看以下单词的词性标记可能更有指导意义:
布朗_ lrnd _ tagged=布朗。tagged _ words(categories= learned ,simplify_tags=True)
nltk中(a,b)的tags=[b[1]。ibi grams(brown _ lrnd _ tagged)if a[0]==常]
fd=nltk .频率分布(标签)
fd。制表()
精装年册至VGWHVBZ .
15 128 5 54 4 33 1 11 1 1
注意,接下来出现频率最高的词类通常是动词。名词从不出现在这个位置(在这个特定的语料库中)。
接下来,让我们看看一些更大的上下文,并找到涉及特定标签和单词序列的单词(在本例中为"动词到动词")。在代码三词短语中,我们考虑句子中的每个三词窗口,并检查它们是否符合我们的标准。如果标签匹配,我们打印相应的单词。
来自nltk.corpus导入棕色
定义过程(句子):
对于nltk .三元模型(句子)中的(w1,t1),(w2,t2),(w3,t3):
if (t1.startswith(V )和t2==到和t3.startswith(V ):
打印w1、w2、w3
对于brown.tagged_sents()中的已标记_已发送:
.流程(已标记_已发送)
.
联合起来实现
继续放置
用来保护
想等等
允许放置
有望成为
.
示例5.3 (code_three_word_phrase.py):图5.3:使用刷卡机标签搜索三个单词的短语
最后,让我们寻找词类标签非常模糊的词。理解为什么这些词在每个上下文中都被标记,可以帮助我们澄清标记之间的区别。
brown _ news _ tagged=brown。tagged _ words(categories=新闻,simplify_tags=True)
数据=nltk .ConditionalFreqDist((word。下(),标记)
.对于布朗新闻中的(单词,标签)
对于data.conditions()中的单词:
.if len(data[word]) 3:
.标签=数据[字]。按键()
.打印单词。加入(标签)
.
最佳ADJADV公司
更好的ADJADV对方阵函数
关闭ADVADJ
切割
甚至ADVDETADJ五世
授予名词短语
击中V VD VN N
莱形容词诉NP VD
形容词北越南左性病
就像全国司法委员会对形容词
ADVADJDET附近
公开形容词诉副词
经过北ADJDETP
现任ADJADV
读虚拟名词短语
右ADJDETADV
第二个数字ADVDET
设置VN V VD N -
全国司法委员会诉WHDET
注意
轮到你了:打开词性一致工具nltk.app.concordance()加载完整的褐色的语料库(简化标签集)。现在挑选一些上面的单词,看看这个单词的标签是如何与这个单词的上下文相关联的。例如,搜索近的查看所有混合在一起的形式,搜索近/ADJ查看它用作形容词,搜索近N查看名词后面的情况,等等。
-我是低调的不显眼的简洁的不会被敌人发现的分割线-
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。