主要内容

분석할텍스트데이터준비하기

이예제에서는분석할텍스트데이터를정리하고전처리하는함수를만드는방법을보여줍니다。

텍스트데이터가클수록통계분석에부정적영향을주는잡음데이터가많이들어있을수있습니다。예를들어텍스트데이터에다음이포함되어있을수있습니다。

  • 대/소문자가변형된단어。예를들면“新”와“新”

  • 어형이변형된단어。예를들면“行走”와“行走”

  • 잡음을추가하는단어。예를들면”같은불용어的“와”

  • 문장부호및특수문자

  • HTML및XML태그

다음워드클라우드는공장보고서의원시텍스트데이터에단어빈도분석을적용한버전과동일한텍스트데이터를전처리한버전을나타낸것입니다。

텍스트데이터불러오기및추출하기

예제데이터를불러옵니다。factoryReports.csv파일에는각이벤트에대한텍스트설명과범주레이블이포함된공장보고서가들어있습니다。

文件名=“factoryReports.csv”;数据= readtable(文件名,“TextType”“字符串”);

描述필드에서텍스트데이터를추출한다음,类别필드에서레이블데이터를추출합니다。

textData = data.Description;labels = data.Category;textData (1:10)
ans =10×1的字符串“物品偶尔会卡在扫描仪线轴上。”“组装活塞发出巨大的嘎嘎声和砰砰声。”“在启动工厂时,电力会被切断。”“组装机里的电容器烧坏了。”“混频器把保险丝弄断了。”"爆裂管道内的施工剂正在喷洒冷却剂"“搅拌机里的保险丝烧断了。”“东西继续从传送带上掉下来。”“传送带上落下的物品。”扫描器卷筒裂开了,很快就会开始弯曲。

토큰화된문서만들기

토큰화된문서로구성된배열을만듭니다。

cleanedDocuments = tokenizedDocument(textData);cleanedDocuments (1:10)
ans = 10×1 tokenizedDocument: 10 token:项目偶尔会卡在扫描仪线轴。11令牌:响亮的咔嗒声和砰砰声来自组装活塞。11个代币:启动工厂时会断电。6令牌:在汇编器中炸电容器。5令牌:混合器触发了保险丝。10令牌:爆裂管道中施工剂正在喷洒冷却剂。8令牌:搅拌机的保险丝烧断了。9个标志:东西继续从传送带上掉下来。7个代币:从传送带上落下的物品。13标记:扫描器卷轴被分裂,它将很快开始弯曲。

제어추출을개선하기위해addPartOfSpeechDetails를사용하여품사세부정보를문서에추가합니다。불용어를제거하고@ @제어를추출하기전에addPartOfSpeech함수를사용하십시오。

cleanedDocuments = addPartOfSpeechDetails(cleanedDocuments);

“一”、“和”、“”、“”같은단어(불용어라고함)는데이터에잡음을추가할수있습니다。removeStopWords함수를사용하여불용어목록을제거합니다。normalizeWords함수를사용하기전에removeStopWords함수를사용하십시오。

cleanedDocuments = removeStopWords(cleanedDocuments);cleanedDocuments (1:10)
ans = 10×1 tokenizedDocument: 7令牌:项目偶尔卡在扫描仪线轴上。8代币:响亮的咔嗒咔嗒的声音传来装配活塞。5代币:切断电源启动装置。4令牌:油炸电容器汇编。4令牌:混合器触发保险丝。7令牌:爆管建造剂喷冷却剂。4令牌:熔断器熔断。6代币:事情继续失控。5个代币:掉落物品输送带。8 .令牌:扫描仪卷筒分裂,很快开始弯曲。

normalizeWords를사용하여단어의@ @제어를추출합니다。

cleanedDocuments = normalizeWords(清洁文档,“风格”“引理”);cleanedDocuments (1:10)
ans = 10×1 tokenizedDocument: 7令牌:项目偶尔会卡在扫描仪线轴上。8令牌:总成活塞发出巨大的嘎嘎声。5令牌:切断电源启动工厂。4令牌:油炸电容器汇编。4令牌:混合器跳闸保险丝。7令牌:爆管施工剂喷雾冷却剂。4个代币:熔断器吹风机。6代币:东西继续滚下皮带。5 .令牌:掉落物品输送带。8 .令牌:扫描仪卷筒分裂,很快开始弯曲。

문서에서문장부호를지웁니다。

cleanedDocuments = eraspunctuation (cleanedDocuments);cleanedDocuments (1:10)
ans = 10×1 tokenized文档:6个符号:物品偶尔卡住扫描仪线轴7个符号:巨大的嘎嘎声巨响来装配机活塞4个符号:切断电源启动装置3个符号:炸电容器装配机3个符号:混合器跳闸保险丝6个符号:爆裂管道施工剂喷雾冷却剂3个符号:保险丝吹风机5个符号:东西继续滚落带4个符号:掉落物品传送带6个符号:扫描仪卷轴分裂很快开始曲线

2자이하로이루어진단어와15자이상으로이루어진단어를제거합니다。

cleanedDocuments = removeShortWords(cleanedDocuments,2);cleanedDocuments = removeLongWords(cleanedDocuments,15);cleanedDocuments (1:10)
ans = 10×1 tokenized文档:6个符号:物品偶尔卡住扫描仪线轴7个符号:巨大的嘎嘎声巨响来装配机活塞4个符号:切断电源启动装置3个符号:炸电容器装配机3个符号:混合器跳闸保险丝6个符号:爆裂管道施工剂喷雾冷却剂3个符号:保险丝吹风机5个符号:东西继续滚落带4个符号:掉落物品传送带6个符号:扫描仪卷轴分裂很快开始曲线

Bag-of-Words모델만들기

词汇袋모델을만듭니다。

cleanedBag = bagOfWords(cleanedDocuments)
cleanedBag = bagOfWords with properties:计数:[480×352 double]词汇:[1×352 string] NumWords: 352 NumDocuments: 480

字袋모델에서2회이하로나타나는단어를제거합니다。

cleanedBag = removeInfrequentWords(cleanedBag,2)
cleanedBag = bagOfWords with properties:计数:[480×163 double]词汇:[1×163 string] NumWords: 163 NumDocuments: 480

removeInfrequentWords같은일부전처리단계를거치면bag-of-words모델에빈문서가생길수있습니다。전처리후字袋모델에빈문서가남아있지않도록하려면removeEmptyDocuments를마지막단계로수행하십시오。

词汇袋모델에서빈문서를제거하고标签에서해당레이블을제거합니다。

[cleanedBag,idx] = removeEmptyDocuments(cleanedBag);标签(idx) = [];cleanedBag
cleanedBag = bagOfWords with properties:计数:[480×163 double]词汇:[1×163 string] NumWords: 163 NumDocuments: 480

전처리함수만들기

서로다른텍스트데이터모음을동일한방식으로준비할수있기때문에,전처리를수행하는함수를만드는것이유용할수있습니다。예를들어함수를사용하여훈련데이터와동일한단계로새데이터를전처리할수있습니다。

분석에사용할수있도록텍스트데이터를토큰화하고전처리하는함수를만듭니다。함수preprocessText는다음단계를수행합니다。

  1. tokenizedDocument를사용하여텍스트를토큰화합니다。

  2. removeStopWords를사용하여불용어목록(예:“and”,“of”,“the”)을제거합니다。

  3. normalizeWords를사용하여단어의@ @제어를추출합니다。

  4. erasePunctuation을사용하여문장부호를지웁니다。

  5. removeShortWords를사용하여2자이하로이루어진단어를제거합니다。

  6. removeLongWords를사용하여15자이상으로이루어진단어를제거합니다。

예제전처리함수preprocessText를사용하여텍스트데이터를준비합니다。

newText =“分拣机发出很大的噪音。”;newDocuments = preprocessText(newText)
newDocuments = tokenizedDocument: 6 token:分拣机发出很大的噪音

원시데이터와비교하기

전처리된데이터를원시데이터와비교합니다。

rawDocuments = tokenizedDocument(textData);rawBag = bagOfWords(rawDocuments)
rawBag = bagOfWords with properties:计数:[480×555 double]词汇:[1×555 string] NumWords: 555 NumDocuments: 480

데이터가얼마나줄었는지계산합니다。

numwordscished = cleanedBag.NumWords;numWordsRaw = rawBag.NumWords;reduce = 1 - numwordssccleaned /numWordsRaw .
还原= 0.7063

워드클라우드를사용하여두bag-of-words모델을시각화하여원시데이터와정리된데이터를비교합니다。

图subplot(1,2,1) wordcloud(rawBag);标题(“原始数据”) subplot(1,2,2) wordcloud(cleanedBag);标题(“清除数据”

전처리함수

함수preprocessText는다음단계를순서대로수행합니다。

  1. tokenizedDocument를사용하여텍스트를토큰화합니다。

  2. removeStopWords를사용하여불용어목록(예:“and”,“of”,“the”)을제거합니다。

  3. normalizeWords를사용하여단어의@ @제어를추출합니다。

  4. erasePunctuation을사용하여문장부호를지웁니다。

  5. removeShortWords를사용하여2자이하로이루어진단어를제거합니다。

  6. removeLongWords를사용하여15자이상으로이루어진단어를제거합니다。

函数documents = preprocessText(textData)标记文本。documents = tokenizedDocument(textData);删除一个停止词列表,然后对这些词进行lemalize。改善% lemmation,首先使用addPartOfSpeechDetails。文档= addPartOfSpeechDetails(文档);documents = removeStopWords(文档);文档= normalizeWords(文档,“风格”“引理”);删除标点符号。documents = eraspunctuation(文档);删除2个或更少字符的单词,以及15个或更多字符的单词%字符。文档= removeShortWords(文档,2);documents = removeLongWords(documents,15);结束

참고 항목

||||||||||

관련 항목