• nlp之加载电商评论集


    代码

    import pandas as pd
    
    df = pd.read_csv("../data/Clothing Reviews.csv")
    print(df.info())
    
    df['Review Text'] = df['Review Text'].astype(str)
    x_train = df['Review Text']
    y_train = df['Rating']
    
    from tensorflow.keras.preprocessing.text import Tokenizer
    
    # 创建词典的索引,默认词典大小20000
    dict_size = 20000
    tokenizer = Tokenizer(num_words=dict_size)
    # jieba: 停用词,标点符号,词性.....
    tokenizer.fit_on_texts(x_train)
    print(len(tokenizer.word_index), tokenizer.index_word)
    
    # 把评论的文本转化序列编码
    x_train_tokenized = tokenizer.texts_to_sequences(x_train)
    print(x_train_tokenized)
    for v in x_train_tokenized[:10]:
        print(v, len(v))
    
    # 可以通过可视化方式展示评论的长度
    import matplotlib.pyplot as plt
    import matplotlib
    import numpy as np
    matplotlib.use('TkAgg')
    
    word_per_comment = [len(comment) for comment in x_train_tokenized]
    plt.hist(word_per_comment, bins=np.arange(0, 200, 10))
    plt.show()
    
    # 通过指定长度,把不等长list转化为等长
    from tensorflow.keras.preprocessing.sequence import pad_sequences
    
    max_comment_length = 120
    x_train = pad_sequences(x_train_tokenized, maxlen=max_comment_length)
    
    for v in x_train[:10]:
        print(v, len(v))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    代码解读

    逐行解读这段代码。

    import pandas as pd
    
    • 1

    引入了pandas库,并以pd为别名。

    df = pd.read_csv("../data/Clothing Reviews.csv")
    
    • 1

    使用pandasread_csv函数读取一个CSV文件,并将其保存到变量df中。

    print(df.info())
    
    • 1

    打印数据框df的信息,包括列名、非空值数量和数据类型。


    RangeIndex: 23486 entries, 0 to 23485
    Data columns (total 11 columns):
    Column Non-Null Count Dtype


    0 Unnamed: 0 23486 non-null int64
    1 Clothing ID 23486 non-null int64
    2 Age 23486 non-null int64
    3 Title 19676 non-null object
    4 Review Text 22641 non-null object
    5 Rating 23486 non-null int64
    6 Recommended IND 23486 non-null int64
    7 Positive Feedback Count 23486 non-null int64
    8 Division Name 23472 non-null object
    9 Department Name 23472 non-null object
    10 Class Name 23472 non-null object

    df['Review Text'] = df['Review Text'].astype(str)
    
    • 1

    将数据框df中的Review Text列的数据类型转换为字符串。

    x_train = df['Review Text']
    y_train = df['Rating']
    
    • 1
    • 2

    Review Text列分配给x_train,将Rating列分配给y_train

    from tensorflow.keras.preprocessing.text import Tokenizer
    
    • 1

    tensorflow.keras.preprocessing.text模块导入Tokenizer类。

    dict_size = 20000
    tokenizer = Tokenizer(num_words=dict_size)
    
    • 1
    • 2

    设置词典大小为20,000,并创建一个Tokenizer对象。

    tokenizer.fit_on_texts(x_train)
    
    • 1

    x_train上调用fit_on_texts方法,这样tokenizer就可以根据x_train中的文本构建词典。

    print(len(tokenizer.word_index), tokenizer.index_word)
    
    • 1

    打印词典中的词数量和词到索引的映射。

    x_train_tokenized = tokenizer.texts_to_sequences(x_train)
    
    • 1

    使用texts_to_sequences方法将x_train中的文本转化为整数序列,并保存到x_train_tokenized

    print(x_train_tokenized)
    
    • 1

    打印转化后的整数序列。

    for v in x_train_tokenized[:10]:
        print(v, len(v))
    
    • 1
    • 2

    打印x_train_tokenized中前10个序列及其长度。

    import matplotlib.pyplot as plt
    import matplotlib
    import numpy as np
    
    • 1
    • 2
    • 3

    导入了matplotlib.pyplotmatplotlibnumpy库。

    matplotlib.use('TkAgg')
    
    • 1

    设置matplotlib使用的后端为TkAgg

    word_per_comment = [len(comment) for comment in x_train_tokenized]
    
    • 1

    计算每个评论的词数,并保存到word_per_comment列表中。

    plt.hist(word_per_comment, bins=np.arange(0, 200, 10))
    
    • 1

    绘制一个直方图,显示评论的词数分布。直方图的分箱范围是0到200,每10个单位一个分箱。

    plt.show()
    
    • 1

    显示上面绘制的直方图。

    from tensorflow.keras.preprocessing.sequence import pad_sequences
    
    • 1

    tensorflow.keras.preprocessing.sequence模块导入pad_sequences函数。

    max_comment_length = 120
    
    • 1

    设置评论的最大长度为120。

    x_train = pad_sequences(x_train_tokenized, maxlen=max_comment_length)
    
    • 1

    使用pad_sequences函数将x_train_tokenized中的序列填充或截断到长度为120。

    for v in x_train[:10]:
        print(v, len(v))
    
    • 1
    • 2

    打印填充或截断后的前10个序列及其长度。

    print('ok')
    
    • 1

    打印ok,表示代码运行完毕。

    总之,这段代码的主要目的是从CSV文件中读取文本评论,然后使用Tokenizer将文本转化为整数序列,并对这些序列进行填充或截断,以确保它们都有相同的长度。

  • 相关阅读:
    深度学习——(生成模型)DDPM
    2023年9月电子学会Python等级考试试卷(四级)答案解析
    蓝桥杯 Java 括号序列
    rtthread下基于spi device架构MCP25625驱动
    记录 | 修改docker存储路径
    这可能是我见过最可爱的乒乓女孩了!
    ABP 使用ElasticSearch、Kibana、Docker 进行日志收集
    Python的内置容器(堆 队列 优先队列 双向队列 栈)
    Selenium元素定位方法总结
    网鼎杯初赛--web1
  • 原文地址:https://blog.csdn.net/weixin_46713695/article/details/134090096