主要内容

bagOfWords

袋式模型

描述

单词袋式模型(也称为术语频率计数器)记录了集合的每个文档中的单词出现的次数。

bagOfWords不能将文本分割成单词。要创建令牌化文档数组,请参见令人畏缩的鳕文

创建

描述

= bagOfWords创建一个空的词袋模型。

例子

= bagofwords(文档计算出现的单词文档并返回一个单词袋模型。

例子

= bagofwords(uniqueWords计数使用其中的单词创建一个单词袋模型uniqueWords和相应的频率计数计数

输入参数

展开全部

输入文档,指定为令人畏缩的鳕文数组,字符串数组,或字符向量的单元格数组。如果文档不是一个令人畏缩的鳕文阵列,那么它必须是表示单个文档的行矢量,其中每个元素是一个单词。要指定多个文档,请使用a令人畏缩的鳕文数组中。

唯一的单词列表,指定为字符串向量或字符向量的单元格数组。如果uniqueWords包含<缺失>,然后该函数忽略缺失值。的大小uniqueWords必须是1-by-V其中v是列的数量计数

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

数据类型:字符串|细胞

对应的单词的频率计数uniqueWords,指定为非负整数的矩阵。价值计数(i,j)对应单词的次数uniquewords(j)出现在文件。

计数一定有numel(uniquewords)列。

属性

展开全部

单词数为每个文档,指定为稀疏矩阵。

被指定为非负整数的文档数量。

模型中的字数,指定为非负整数。

模型中的唯一单词,指定为字符串向量。

数据类型:字符串

对象的功能

编码 将文档编码为单词或n元计数矩阵
tfidf 术语频率-反文档频率(tf-idf)矩阵
topkwords. 单词袋模型或LDA主题中最重要的单词
adddocument. 将文档添加到单词袋或袋式袋模型
删除录制 从单词袋或n-gram袋模型中删除文档
removeEmptyDocuments 从令牌化文档阵列中删除空文档,文字袋模型或N-r克模型
removeWords 从文档或词袋模型中删除选定的词
removeInfrequentWords 从单词袋模型中删除低计数的单词
加入 组合多个bag-of-words或bag-of-n-grams模型
wordcloud 从文本、词袋模型、词袋-n-grams模型或LDA模型创建词云图

例子

全部收缩

加载示例数据。该文件sonnetspreprocessed.txt.txt.包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从sonnetspreprocessed.txt.txt.,将文本以换行符分割为文档,然后标记文档。

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

使用袋式模型使用bagOfWords

BAG = BAGOFWORDS(文件)
bag = bagOfWords with properties: Counts: [154x3092 double]词汇:[1x3092 string] NumWords: 3092 NumDocuments: 154

查看前10个单词和它们的总数。

TBL = TOPKWORDS(包,10)
台=10×2表字数________________“你”281“你”234“爱”162“你”161“Doth”88“我的”63“才能”59“眼睛”56“甜蜜”55“时间”53

创建一个词袋模型使用一个独特的词的字符串数组和一个词计数矩阵。

uniqueWords = [“一种”“一个”“其他”“例子”“最终”“句子”“第三”];counts = [...1 2 0 1 0 1 0 0;0 0 3 1 0 4 0;1 0 0 5 0 3 1;1 0 0 1 7 0 0];袋= bagOfWords (uniqueWords计数)
BAG =具有属性的Bagofwords:Counts:[4x7 Double]词汇:[1x7字符串] numwords:7 numfocuments:4

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

为示例SONNET文本文件创建文件数据存储。SONNET的示例有文件名“示例entn.txt.“, 在哪里N是十四行诗的编号。指定要读取的函数extractFileText

readFcn = @extractFileText;fds = fileDatastore (“exampleSonnet * . txt”“ReadFcn”,readfcn)
FDS =具有属性的FileDataStore:文件:{'... / TP706790C2 / TextAnalytics-ex73762432 / idestonnet1.txt';'... / tp706790c2 / textanalytics-ex73762432 / idestonnet2.txt';'... / tp706790c2 / textanalytics-ex73762432 / idestonnet3.txt'a和1更多}文件夹:{'tmp / bdoc21a_1606923_11597 / tp706790c2 / textanalytics-ex73762432'} simentreread:0 Readmode:'file'blocksize:Inf previewfcn:@ExtractFiletext支持万博1manbetxodutputFormats:[1x16字符串] Readfcn:@extractfiletext alternatefilesystemroots:{}

创建一个空袋式模型。

bag = bagofwords.
BAG = BAGOFWORDS具有属性:计数:[]词汇:[1x0字符串] numwords:0 numfocuments:0

循环数据存储区中的文件并读取每个文件。在每个文件中授权文本并将文档添加到

尽管Hasdata (fds) STR = read(fds);文档= tokenizedDocument (str);袋= addDocument(袋、文档);结束

查看更新的单词袋式模型。

bag = bagOfWords with properties: Counts: [4x276 double] Vocabulary: [1x276 string] NumWords: 276 NumDocuments: 4

通过输入停止词列表来从词袋模型中删除停止词removeWords.停止词是像“a”、“the”和“in”这样的词,这些词在分析之前通常会从文本中删除。

文件= tokenizedDocument ([“一句话的一个例子”第二个短句]);袋= bagOfWords(文件);stopWords newBag = removeWords(袋)
newbag = bagofwords的属性:counts:[2x4 double]词汇:[示例“”短“”句子“”第二“] numwords:4 numfocuments:2

创建一个最常见的单词袋式模型的表。

加载示例数据。该文件sonnetspreprocessed.txt.txt.包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从sonnetspreprocessed.txt.txt.,将文本以换行符分割为文档,然后标记文档。

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

使用袋式模型使用bagOfWords

BAG = BAGOFWORDS(文件)
bag = bagOfWords with properties: Counts: [154x3092 double]词汇:[1x3092 string] NumWords: 3092 NumDocuments: 154

找到前五个单词。

T = topkwords(袋);

找到模型中的前20个单词。

k = 20;t = topkwords(袋子,k)
T =20×2表单词数________ _____“你”281“你”234“爱”162“你”161“Doth”88“我的”63“才能”59“眼睛”56“甜蜜”55“时间”53“美”52“的时间”53“美”52““52”艺术“51”,但“51”o“50”心脏“50‰

从词汇袋模型创建术语频率-反文档频率(tf-idf)矩阵。

加载示例数据。该文件sonnetspreprocessed.txt.txt.包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从sonnetspreprocessed.txt.txt.,将文本以换行符分割为文档,然后标记文档。

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

使用袋式模型使用bagOfWords

BAG = BAGOFWORDS(文件)
bag = bagOfWords with properties: Counts: [154x3092 double]词汇:[1x3092 string] NumWords: 3092 NumDocuments: 154

创建TF-IDF矩阵。查看前10行和列。

m = tfidf(袋);满(m(1:10,1:10)))
ans =.10×103.6507 4.3438 2.7344 3.6507 4.3438 2.2644 3.2452 3.2452 3.8918 2.4720 2.5520 2.4720 2.5520 0 0 0 0 4.5287 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 2.2644 0 0 0 00 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.2644 0 0 0 2.5520 0 0 2.7344 0 0 0 0 0 0 0

加载示例数据。该文件sonnetspreprocessed.txt.txt.包含了经过预处理的莎士比亚十四行诗。该文件每行包含一首十四行诗,单词之间用空格分隔。将文本从sonnetspreprocessed.txt.txt.,将文本以换行符分割为文档,然后标记文档。

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

使用袋式模型使用bagOfWords

BAG = BAGOFWORDS(文件)
bag = bagOfWords with properties: Counts: [154x3092 double]词汇:[1x3092 string] NumWords: 3092 NumDocuments: 154

使用单词云可视化单词袋式模型。

图WordCloud(包);

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

如果您的文本数据包含在文件夹中的多个文件中,则可以使用该文本数据导入文本数据并以并行创建单词袋式模型parfor.如果您安装了并行计算工具箱™,那么parfor循环并行运行,否则,它在串行中运行。采用加入将一系列单词模型组合成一个型号。

从文件集合创建一个单词袋式模型。SONNET的示例有文件名“示例entn.txt.“, 在哪里N是十四行诗的编号。获取文件的列表和他们的位置使用dir

fileLocation = fullfile (matlabroot,'例子''textanalytics'“exampleSonnet * . txt”);fileInfo = dir (fileLocation)
FileInfo = 0x1空结构数组与字段:名称文件夹日期字节ISDIR数据

初始化空袋式模型,然后循环循环文件并创建一系列单词模型。

bag = bagofwords;numfiles = numel(fileinfo);parfori = 1:numFiles f = fileInfo(i);文件名= fullfile (f.folder f.name);textData = extractFileText(文件名);文档= tokenizedDocument (textData);袋(我)= bagOfWords(文档);结束

结合单词袋模型使用加入

袋=加入(袋)
BAG = BAGOFWORDS具有属性:计数:[]词汇:[1x0字符串] numwords:0 numfocuments:0

提示

  • 如果您打算为您的工作使用已保留的测试设置,请在使用之前分区文本数据bagOfWords.否则,文字袋模型可能会偏见您的分析。

介绍了R2017b