Python:如何将编码后的one-hot向量与字符串POS标签关联
关联POS标签与独热编码向量的方法
嘿,这事儿其实很简单,LabelBinarizer本身就自带了能帮你建立映射的属性,不用额外费劲!我给你一步步拆解:
1. 先明确标签与编码的对应关系基础
你用fit_transform传入的POS标签列表,LabelBinarizer会把这些标签按传入顺序存到encoder.classes_属性里。而transfomed_label矩阵的每一行,正好对应encoder.classes_中对应索引位置标签的独热编码。
2. 创建标签到独热向量的映射字典
直接用字典推导式就能快速生成这个映射:
import numpy as np from sklearn.preprocessing import LabelBinarizer # 你的原始代码 encoder = LabelBinarizer() pos_tags = ["CC","CD","DT","EX","FW","IN","JJ","JJR","JJS","LS","MD","NN","NNS","NNP","NNPS","PDT","POS","PRP","PRP$","RB","RBR","RBS","RP","SYM","TO","UH","VB","VBD","VBG","VBN","VBP","VBZ","WDT","WP","WP$","WRB"] transfomed_label = encoder.fit_transform(pos_tags) # 生成标签→独热向量的映射 label_to_onehot = {tag: transfomed_label[i] for i, tag in enumerate(encoder.classes_)} # 举个例子:查看"CC"对应的独热向量 print(label_to_onehot["CC"])
3. 从独热向量反向查找对应的POS标签
如果手里有一个独热向量,想找到它对应的标签,可以先通过np.argmax()找到向量中1的索引,再从encoder.classes_里取对应位置的标签:
# 假设我们有一个独热向量(比如对应"NN"的向量) sample_vec = transfomed_label[11] # 因为"NN"在原始列表的第12个位置,索引是11 # 找到对应的标签 tag_index = np.argmax(sample_vec) corresponding_tag = encoder.classes_[tag_index] print(corresponding_tag) # 输出: NN
这样你就能轻松双向关联POS标签和它的独热编码向量啦!
内容的提问来源于stack exchange,提问作者Timothy Rajan
相关产品推荐
相关产品推荐

