• nlp之文本转向量


    文章目录

    代码

    from tensorflow.keras.preprocessing.text import Tokenizer  # 标记器(每一个词,以我们的数值做映射,)
    
    words = ['LaoWang has a Wechat account.', 'He is not a nice person.', 'Be careful.']  # 把这句话中每一个单词,映射成我们的数值
    tokenizer = Tokenizer(num_words=15)  # 上面三句话中,词的总数不超过 15 个(估算的值), num_words 设置单词的数量
    tokenizer.fit_on_texts(words)
    word_index = tokenizer.word_index
    print(word_index, len(word_index))
    # 把文本转化为序列编码
    sequences = tokenizer.texts_to_sequences(words)
    print(sequences)
    # 文本转化为矩阵
    one_hot_matrix = tokenizer.texts_to_matrix(words, mode='binary')
    # 向量化是构建神经网络的第一步
    print(tokenizer.word_index.keys())
    print(one_hot_matrix, one_hot_matrix.shape)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    代码解读

    逐行解读这段代码。

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

    tensorflow.keras.preprocessing.text模块导入Tokenizer类。Tokenizer用于文本标记,将每一个词映射为一个整数值。

    words = ['LaoWang has a Wechat account.', 'He is not a nice person.', 'Be careful.']
    
    • 1

    定义了一个列表words,包含三个字符串。

    tokenizer = Tokenizer(num_words=15)
    
    • 1

    创建一个Tokenizer对象,并设置参数num_words=15,意味着最大考虑15个单词。这不代表只有15个单词会被编码,而是在后续转换为矩阵时,只会考虑频率最高的前15个单词。

    tokenizer.fit_on_texts(words)
    
    • 1

    调用fit_on_texts方法让tokenizerwords列表上进行学习,从而创建一个词到整数值的映射。

    word_index = tokenizer.word_index
    
    • 1

    获取tokenizerword_index属性,它是一个字典,其中键是单词,值是单词对应的整数值。

    print(word_index, len(word_index))
    
    • 1

    {‘a’: 1, ‘laowang’: 2, ‘has’: 3, ‘wechat’: 4, ‘account’: 5, ‘he’: 6, ‘is’: 7, ‘not’: 8, ‘nice’: 9, ‘person’: 10, ‘be’: 11, ‘careful’: 12} 12

    打印word_index字典和它的长度。

    sequences = tokenizer.texts_to_sequences(words)
    
    • 1

    调用texts_to_sequences方法将words列表中的文本转化为整数序列,保存到sequences中。

    print(sequences)
    
    • 1

    [[2, 3, 1, 4, 5], [6, 7, 8, 1, 9, 10], [11, 12]]

    打印sequences列表。

    one_hot_matrix = tokenizer.texts_to_matrix(words, mode='binary')
    
    • 1

    调用texts_to_matrix方法将words列表中的文本转化为二进制矩阵,保存到one_hot_matrix中。二进制矩阵意味着,如果某个单词出现在文本中,它的位置会是1,否则是0。

    print(tokenizer.word_index.keys())
    
    • 1

    dict_keys([‘a’, ‘laowang’, ‘has’, ‘wechat’, ‘account’, ‘he’, ‘is’, ‘not’, ‘nice’, ‘person’, ‘be’, ‘careful’])

    打印word_index字典中所有的键(即所有的单词)。

    print(one_hot_matrix, one_hot_matrix.shape)
    
    • 1

    [[0. 1. 1. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
    [0. 1. 0. 0. 0. 0. 1. 1. 1. 1. 1. 0. 0. 0. 0.]
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0.]] (3, 15)

    打印one_hot_matrix和它的形状。这个矩阵的每一行对应words列表中的一个文本,每一列对应一个单词。如果文本中有该单词,则该位置的值为1,否则为0。

    总结:这段代码首先定义了一个文本列表,然后使用Tokenizer类将文本转化为整数序列,最后将文本转化为二进制矩阵。这是将文本数据预处理为可以输入到神经网络的形式的常见步骤。

  • 相关阅读:
    Android12之gdb使用.gdbinit快捷调试
    数据分析9
    Python 周期任务神器,太实用了
    现代修谱有4个事情尽量不要做,避免掉坑
    MinDoc文档管理系统在宝塔环境安装教程
    客户跟进新技能get!直接收藏!
    orm双下滑线
    通过AX6000路由器,实现外部访问内网的任意主机
    js的作用域
    图解隐马尔可夫模型(HMM)
  • 原文地址:https://blog.csdn.net/weixin_46713695/article/details/134090195