我最近在做一个自然语言处理的作业,词性标注
首先对词性标注的数据集进行处理
直接上代码,我再解释一下
# -*- coding: utf-8 -*-
import nltk
def trans_chaToNum(tagged):
pred = []
for tag in tagged:
result = tag[1]
pred.append(result)
# 2.把字符编号,不同的字符对应不同的编号
mylist = set(pred)
mylist = list(mylist)
Pred = {}
for i in range(len(mylist)):
Pred[mylist[i]] = i
# 3.把刚刚那个形式里面的字符都替换成 编号
trans_pred = []
for i in pred:
trans_pred.append(Pred[i])
return Pred, trans_pred
if __name__ == '__main__':
A = open('D:/pythonProject/CwsPosNerCNNRNNLSTM-master/CwsPosNerCNNRNNLSTM-master/traindata.txt', "r",
encoding='utf-8').readlines()
tagged_sent = [] # [('to', 'TO'), ('hold', 'VB'), ('on', 'RP'), ('to', 'TO'), ('its', 'PRP$'), ('paper', 'NN'), ('.', '.')]
for a in A:
sent = a.split() # ['./.']
for item in sent:
pair = nltk.str2tuple(item) # ('.', '.')
tagged_sent.append(pair)
tagged_dict, trans_tagged_sent = trans_chaToNum(tagged_sent)
我打开的赋给A的文件的样子长这样子:
这个格式就是: 英文词/词性
sent和pair的格式样子,已经在后面标好了
最后得到的tagged_sent的格式也已经在后面标好了
最后把这个格式送进 trans_chaToNum函数里面。
最后输出的结果是这样子的:
tagged_dict=
{'NNP': 0, 'CD': 1,..., 'VBG|NN': 45, 'RB|IN': 46, 'CC': 47, 'VBD': 51, 'EX': 52, 'NN|NNS': 53}
大致长这个样子,就是会把每个词性给编号,可以看到我这个数据集里面有53种词性,每个词性给予了自己的编号,包括标点符号也给编号了
trans_tagged_sent=
[0, 3, 41, 19, 49, 25, 30,...,19, 34, 25, 14]
把所有的前面的数据集的英文词 对应的 词性进行编号,因此这个list很长很长