主要内容

bagOfWords

Bag-of-words模型

描述

bag-of-words模型(也称为term-frequency计数器)记录的次数,单词出现在每个文档的集合。

bagOfWords没有文本分割成单词。创建一个数组标记化的文件,看到tokenizedDocument

创建

描述

= bagOfWords创建一个空bag-of-words模型。

例子

= bagOfWords (文档)项中出现文档并返回一个bag-of-words模型。

例子

= bagOfWords (uniqueWords,计数)创建一个bag-of-words模型使用单词uniqueWords和相应的频率计数计数

输入参数

全部展开

输入文件,指定为一个tokenizedDocument数组,字符串数组的话,或一个细胞的特征向量。如果文档不是一个tokenizedDocument数组,那么它必须是一个行向量代表一个文档,其中每个元素是一个词。指定多个文档,使用tokenizedDocument数组中。

独特的单词列表,指定为一个字符串特征向量的向量或一个单元阵列。如果uniqueWords包含<失踪>,然后忽略了缺失值的函数。的大小uniqueWords必须是1 -V在V的列数计数

例子:["一个"“例子”“列表”]

数据类型:字符串|细胞

对应的单词的频率计数uniqueWords,指定为一个矩阵的非负整数。的值计数(i, j)对应于这个词的次数uniqueWords (j)出现在文档。

计数必须有元素个数(uniqueWords)列。

属性

全部展开

单词统计每个文档,指定为一个稀疏矩阵。

的文档数量,指定为一个非负整数。

独特的单词数量模型,指定为一个非负整数。

独特的模型中,指定为一个字符串向量。

数据类型:字符串

对象的功能

编码 编码矩阵的词或语法方面的文件
tfidf 术语Frequency-Inverse文档频率(tf-idf)矩阵
topkwords 最重要的是单词bag-of-words模型或LDA的话题
addDocument 添加文档bag-of-words或bag-of-n-grams模型
removeDocument 把文件从bag-of-words或bag-of-n-grams模型
removeEmptyDocuments 删除空的文件从标记化的文档数组,bag-of-words模型,或bag-of-n-grams模型
removeWords 删除选中的文字从文档或bag-of-words模型
removeInfrequentWords 从bag-of-words模型删除单词计数较低
加入 结合多个bag-of-words或bag-of-n-grams模型
wordcloud 创建词云图表从文本、bag-of-words模型bag-of-n-grams模型,或LDA模型

例子

全部折叠

加载示例数据。该文件sonnetsPreprocessed.txt莎士比亚的十四行诗的包含预处理版本。文件包含每行一个十四行诗,单词之间用一个空格来分隔。提取的文本sonnetsPreprocessed.txt在换行字符,文本分割成文档,然后标记文件。

文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);

创建一个bag-of-words模型使用bagOfWords

袋= bagOfWords(文档)
袋= bagOfWords属性:计数:[154 x3092双]词汇:“公平”“生物”“希望”“增加”“从而”“美”“玫瑰”“可能”“从不”“死”“成熟”“时间”“死”“温柔”“继承人”“熊”“记忆”“你”“简约”…]NumWords: 3092 NumDocuments: 154

查看排名前十的单词和他们的总数量。

台= topkwords(袋,10)
台=10×2表字数_________ _____”你的“281”你“234”爱“162”你“161”作“88”我“63“应当”59 56“眼睛”“甜”55“时间”53

创建一个bag-of-words模型使用一个字符串数组独特的单词和单词统计的矩阵。

uniqueWords = [“一个”“一个”“另一个”“例子”“最终”“句子”“第三”];数量= (1 2 0 1 0 1 0;0 0 3 1 0 4 0;1 0 0 5 0 3 1;1 0 0 1 7 0 0];袋= bagOfWords (uniqueWords计数)
袋= bagOfWords属性:计数:[4 x7双]词汇:[“a”“一个”“另一个”“例子”“最终”“句子”“第三”]NumWords: 7 NumDocuments: 4

如果你的文本数据中包含多个文件在一个文件夹中,然后您可以将文本数据导入MATLAB使用文件数据存储。

创建一个数据存储的文件示例十四行诗的文本文件。十四行诗的示例文件名称”exampleSonnetN.txt”,N十四行诗的数量。指定阅读功能extractFileText

readFcn = @extractFileText;fds = fileDatastore (“exampleSonnet * . txt”,“ReadFcn”,readFcn);

创建一个空bag-of-words模型。

袋= bagOfWords
袋= bagOfWords属性:计数:[]词汇:[1 x0字符串]NumWords: 0 NumDocuments: 0

遍历每个文件数据存储和读取的文件。标记每个文件并添加文档中的文本

hasdata (fds) str =阅读(fds);文档= tokenizedDocument (str);袋= addDocument(袋、文档);结束

查看更新bag-of-words模型。

袋= bagOfWords属性:计数:[4 x276双]词汇:“从”“公平”“生物”“我们”“希望”“增长””、““““从而”“美”“玫瑰”“可能”“从不”“死”“但是”“”“”“成熟”“应该”“通过”“时间”……]NumWords: 276 NumDocuments: 4

移除阻止的话bag-of-words模型通过输入停止词的列表removeWords。停止词词如“a”、“的”,“在”,通常从文本分析之前删除。

文件= tokenizedDocument ([“一个短句”“第二个短句”]);袋= bagOfWords(文件);stopWords newBag = removeWords(袋)
newBag = bagOfWords属性:计数:[2 x4双]词汇:[“例子”“短”“句子”“第二”]NumWords: 4 NumDocuments: 2

创建一个表的最频繁的词语bag-of-words模型。

加载示例数据。该文件sonnetsPreprocessed.txt莎士比亚的十四行诗的包含预处理版本。文件包含每行一个十四行诗,单词之间用一个空格来分隔。提取的文本sonnetsPreprocessed.txt在换行字符,文本分割成文档,然后标记文件。

文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);

创建一个bag-of-words模型使用bagOfWords

袋= bagOfWords(文档)
袋= bagOfWords属性:计数:[154 x3092双]词汇:“公平”“生物”“希望”“增加”“从而”“美”“玫瑰”“可能”“从不”“死”“成熟”“时间”“死”“温柔”“继承人”“熊”“记忆”“你”“简约”…]NumWords: 3092 NumDocuments: 154

找到五个字。

T = topkwords(袋);

发现模型中的前20个单词。

k = 20;T = topkwords(袋、k)
T =20×2表字数________ _____”你的“281”你“234”爱“162”你“161”作“88”我“63“应当”59 56“眼睛”“甜”55“时间”53“美”52”还是“52“艺术”51“然而”51“o”50 50⋮“心”

创建一个术语Frequency-Inverse文档频率(tf-idf)矩阵从bag-of-words模型。

加载示例数据。该文件sonnetsPreprocessed.txt莎士比亚的十四行诗的包含预处理版本。文件包含每行一个十四行诗,单词之间用一个空格来分隔。提取的文本sonnetsPreprocessed.txt在换行字符,文本分割成文档,然后标记文件。

文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);

创建一个bag-of-words模型使用bagOfWords

袋= bagOfWords(文档)
袋= bagOfWords属性:计数:[154 x3092双]词汇:“公平”“生物”“希望”“增加”“从而”“美”“玫瑰”“可能”“从不”“死”“成熟”“时间”“死”“温柔”“继承人”“熊”“记忆”“你”“简约”…]NumWords: 3092 NumDocuments: 154

创建一个tf-idf矩阵。查看前十行和列。

M = tfidf(袋);完整的(M (1:10, 1:10))
ans =10×103.6507 4.3438 2.7344 3.6507 4.3438 2.2644 3.2452 3.8918 2.4720 2.5520 4.5287 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.5520 2.2644 2.2644 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.2644 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.7344 2.2644 2.5520 0 0 0 0 0 0 0 0 0 0 0 0

加载示例数据。该文件sonnetsPreprocessed.txt莎士比亚的十四行诗的包含预处理版本。文件包含每行一个十四行诗,单词之间用一个空格来分隔。提取的文本sonnetsPreprocessed.txt在换行字符,文本分割成文档,然后标记文件。

文件名=“sonnetsPreprocessed.txt”;str = extractFileText(文件名);textData =分裂(str,换行符);文件= tokenizedDocument (textData);

创建一个bag-of-words模型使用bagOfWords

袋= bagOfWords(文档)
袋= bagOfWords属性:计数:[154 x3092双]词汇:“公平”“生物”“希望”“增加”“从而”“美”“玫瑰”“可能”“从不”“死”“成熟”“时间”“死”“温柔”“继承人”“熊”“记忆”“你”“简约”…]NumWords: 3092 NumDocuments: 154

可视化bag-of-words云模型使用一个词。

图wordcloud(袋);

图包含一个wordcloud类型的对象。

如果你的文本数据中包含多个文件在一个文件夹中,然后您可以导入文本数据,创建一个bag-of-words模型并行使用parfor。如果你安装了并行计算工具箱™,那么parfor循环并行运行,否则,它在连续运行。使用加入数组bag-of-words模型合并成一个模型。

创建一个文件名列表。十四行诗的示例文件名称”exampleSonnetN.txt”,N十四行诗的数量。

文件名= [“exampleSonnet1.txt”“exampleSonnet2.txt”“exampleSonnet3.txt”“exampleSonnet4.txt”];

创建一个bag-of-words模型从文件的集合。初始化一个空bag-of-words模型然后遍历文件和每个文件创建一个bag-of-words模型。

袋= bagOfWords;numFiles =元素个数(文件名);parfori = 1: numFiles文件名=文件名(我);textData = extractFileText(文件名);文档= tokenizedDocument (textData);袋(我)= bagOfWords(文档);结束
开始平行池(parpool)使用过程的概要文件…连接到平行池4工人。

结合bag-of-words模型使用加入

袋=加入(袋)
袋= bagOfWords属性:计数:[4 x276双]词汇:“从”“公平”“生物”“我们”“希望”“增长””、““““从而”“美”“玫瑰”“可能”“从不”“死”“但是”“”“”“成熟”“应该”“通过”“时间”……]NumWords: 276 NumDocuments: 4

提示

  • 如果你打算使用了测试设置为你的工作,然后划分你的文本数据在使用前bagOfWords。否则,bag-of-words模型可能偏差分析。

版本历史

介绍了R2017b