主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。

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

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

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

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

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

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

  • 문장부호및특수문자

  • HTML및XML태그

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

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

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

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

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

textData = data.Description;标签= 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令牌:爆管中施工剂正在喷洒冷却剂。令牌:搅拌器中的保险丝熔断了。9代币:东西继续从腰带上掉下来。7代币:从传送带上掉落的物品。13令牌:扫描仪卷轴被分割,它很快就会开始弯曲。

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

cleanedDocuments = addPartOfSpeechDetails (cleanedDocuments);

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

cleanedDocuments = removeStopWords (cleanedDocuments);cleanedDocuments (1:10)
ans = 10×1 tokenizedDocument: 7 token:物品偶尔会卡在扫描器卷轴上。8代币:组装器活塞发出的响亮的咔哒咔哒的砰砰声。5代币:切断电源启动工厂。4代币:油炸电容器组装器。4令牌:混合器触发保险丝。7令牌:爆管施工剂喷涂冷却剂。4令牌:熔断器熔断。6代币:东西继续从皮带上掉下来。5代币:掉落物品传送带。令牌:扫描仪卷轴分裂,很快开始曲线。

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

cleanedDocuments = normalizeWords (cleanedDocuments,“风格”“引理”);cleanedDocuments (1:10)
ans = 10×1 tokenizedDocument: 7 token:物品偶尔会卡在扫描仪卷轴上。8代币:响亮的响声来组装活塞。5代币:切断电源启动电站。4代币:油炸电容器组装器。4令牌:混合器脱扣保险丝。7令牌:爆管施工剂喷淋冷却剂。4令牌:熔丝吹混器。代币:东西继续滚下皮带。5代币:掉落物品传送带。令牌:扫描仪卷轴分裂,很快开始曲线。

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

cleanedDocuments = erasePunctuation (cleanedDocuments);cleanedDocuments (1:10)
ans = 10×1 tokenizedDocument: 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 tokenizedDocument: 6令牌:项目偶尔卡住扫描仪线轴7令牌:大声喋喋不休的爆炸声音来汇编活塞4令牌:减少力量开始工厂3令牌:炒电容器汇编3令牌:搅拌机旅行保险丝6令牌:破裂管道建设剂喷雾冷却剂3令牌:保险丝打击搅拌机5令牌:东西继续滚落带4代代币:落下物品输送带6代代币:扫描仪卷轴分裂很快开始曲线

Bag-of-Words모델만들기

bag-of-words모델을만듭니다。

cleanedBag = bagOfWords (cleanedDocuments)
cleanedBag = bagOfWords with properties: Counts: [480×352 double

bag-of-words모델에서2회이하로나타나는단어를제거합니다。

cleanedBag = removeInfrequentWords (cleanedBag, 2)
cleanedBag = bagOfWords with properties: Counts: [480×163 double] Vocabulary: [1×163 string] NumWords: 163 NumDocuments: 480

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

bag-of-words모델에서빈문서를제거하고标签에서해당레이블을제거합니다。

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

전처리함수만들기

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

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

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

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

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

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

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

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

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

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

원시데이터와비교하기

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

rawDocuments = tokenizedDocument (textData);rawBag = bagOfWords (rawDocuments)
rawBag = bagOfWords with properties: Counts: [480×555 double] Vocabulary: [1×555 string] NumWords: 555 NumDocuments: 480

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

numWordsCleaned = cleanedBag.NumWords;numWordsRaw = rawBag.NumWords;减少= 1 - numwordcleaned /numWordsRaw
减少= 0.7063

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

图次要情节(1、2、1)wordcloud (rawBag);标题(“原始数据”次要情节(1、2、2)wordcloud (cleanedBag);标题(“清除数据”

전처리함수

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

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

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

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

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

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

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

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

참고항목

||||||||||

관련항목