TensFlow自然语言处理提取词性

1.为统计出好评与差评最主要的几个关键点,我们可以先进行词性提取,提取出所有的形容词后再进行统计数量

#导入jieba用于分词
#导入chain方法用于扁平化列表
import jieba
from itertools import chain
#将训练集的句子进行分词,并统计出不同词汇的总数
train_vocab=set(chain(*map(lambda x:jieba.lcut(x),train_data["sentence"])))#*代表可迭代输出 
print("训练集共包含不同词汇总数为:",len(train_vocab))


#posseg提取词性
import jieba.posseg as pseg
def get_a_list(text):
    """用于获取形容词列表"""
    # 使用jieba的词性标注方法切分文本,获得具有词性属性flag和词汇属性word的对象
    # 从而判断flag是否为形容词,来返回对应的词汇
    r=[]
    for g in pseg.lcut(text):
        if g.flag=="a":
            r.append(g.word)
    return r
    
#导入绘制词云的工具包
from wordcloud import WordCloud

def get_word_cloud(keywords_list):
    # 实例化绘制词云的类
    wordcloud = WordCloud(font_path=r".C:\Windows\WinSxS\amd64_microsoft-windows-font-truetype-simhei_31bf3856ad364e35_10.0.22621.1_none_55bd821267d31393\simhei.ttf", max_words=100, background_color="white")
    # 将传入的列表转化为词云生成器所需要的字符串形式
    keywords_string = " ".join(keywords_list)
    # 生成词云
    wordcloud.generate(keywords_string)
    plt.figure()
    plt.imshow(wordcloud, interpolation="bilinear")
    plt.axis("off")
    plt.show()
#获取训练集上的正样本
p_train_data=train_data[train_data["label"]==1]["sentence"]
#要所有正样本
train_p_a_vocab=chain(*map(lambda x:get_a_list(x),p_train_data))
#负样本
n_train_data=train_data[train_data["label"]==0]["sentence"]
train_n_a_vocab=chain(*map(lambda x:get_a_list(x),n_train_data))
#绘制词云
get_word_cloud(train_p_a_vocab)
get_word_cloud(train_n_a_vocab)

得出结果。

#常见的文本特征处理方法:
#添加n-gram特征
#文本长度规范 
#为文本加入2元特征,

ngram_range=2
def create_ngram_set(input_list):
       
        return set(zip(*[input_list[i:] for i in range(ngram_range)]))#错开一位进行配对 set去重
input_list=[1,3,2,1,5,3]
res=create_ngram_set(input_list)
print(res)
#文本规范以及其作用
#一般模型的输入需要等尺寸大小矩阵,因此再进入模型前需要对文本数据映射后的长度及逆行规范,此时将根据句子长度分布分析出覆盖范围绝大多数的文本合理长度,对超长文本进行截断,对不足文本进行补齐
from keras.preprocessing import sequence
#设定长度
cutlen =10
def padding(x_train):
    #使用sequence.pad_sequences即可完成
    return sequence.pad_sequences(x_train,cutlen)
# x_train
#结果从后面截,不够的从前面添0
x=[[1,2,3,42,3,4,5,1,5,1,4,2,1],[1,2,3,41,2]]
t=padding(x)
print(t)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值