テキスト分析 特定の品詞のみを対象

조회 수: 4 (최근 30일)
TS
TS 2021년 2월 25일
댓글: TS 2021년 3월 1일
テキストを分析する際、トークン化後、ストップワードを削除したり、句読点を削除したりすると思いますが、その際、特定の品詞のみ(名詞、形容詞、動詞など)を対象することは可能でしょうか。もしくは、Nグラムを行う際に、特定の品詞のみを対象にすることは可能でしょうか。

채택된 답변

Misa Taguchi
Misa Taguchi 2021년 2월 26일
こんにちは。可能だと思われます。以下に簡単なデモを作成いたしましたが、こちらの処理ではいかがでしょうか。
%% 解析用データの読込み(「吾輩は猫である」を読み込んでいます)
url = "https://www.aozora.gr.jp/cards/000148/files/789_14547.html";
options = weboptions('CharacterEncoding','Shift_JIS');
code = webread(url,options);
textData = extractHTMLText(code);
textData = string(split(textData,newline));
idx = textData == "";
textData(idx) = [];
%% トークン化
documents = tokenizedDocument(textData);
%% 品詞情報の取得
tdetails = tokenDetails(documents);
head(tdetails)
%% 名詞の抽出
idx = tdetails.PartOfSpeech == "noun";
tokens = tdetails(idx,:);
for ii = 1:max(tokens.DocumentNumber)
try
str(ii,:) = join(tokens.Token(tokens.DocumentNumber == ii));
end
end
%% 名詞のストップワード削除
documents = tokenizedDocument(str);
documents = removeStopWords(documents);
%% Nグラムの作成(この例ではBigram)
bag = bagOfNgrams(documents,'NgramLengths',2);
  댓글 수: 3
Misa Taguchi
Misa Taguchi 2021년 3월 1일
無事に実装できたとのこと安心いたしました。ご記載の処理では、
idx = textData == "";
によりtextDataの中の""の部分(=テキストが空の行)のインデックス(idx)を探し、
textData(idx) = [];
により、該当する行を削除しています。
以下のコードにより、該当の処理前後でtextDataがどう変化するか、ご覧いただけるかと思います。
%% 解析用データの読込み(「吾輩は猫である」を読み込んでいます)
url = "https://www.aozora.gr.jp/cards/000148/files/789_14547.html";
options = weboptions('CharacterEncoding','Shift_JIS');
code = webread(url,options);
textData = extractHTMLText(code);
textData = string(split(textData,newline));
textData(1:10) % 追加
idx = textData == "";
textData(idx) = [];
textData(1:10) % 追加
TS
TS 2021년 3월 1일
ご回答ありがとうございました。空の行を削除していることが確認できました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Text Data Preparation에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!