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

6 Ansichten (letzte 30 Tage)
TS
TS am 25 Feb. 2021
Kommentiert: TS am 1 Mär. 2021
テキストを分析する際、トークン化後、ストップワードを削除したり、句読点を削除したりすると思いますが、その際、特定の品詞のみ(名詞、形容詞、動詞など)を対象することは可能でしょうか。もしくは、Nグラムを行う際に、特定の品詞のみを対象にすることは可能でしょうか。

Akzeptierte Antwort

Misa Taguchi
Misa Taguchi am 26 Feb. 2021
こんにちは。可能だと思われます。以下に簡単なデモを作成いたしましたが、こちらの処理ではいかがでしょうか。
%% 解析用データの読込み(「吾輩は猫である」を読み込んでいます)
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 Kommentare
Misa Taguchi
Misa Taguchi am 1 Mär. 2021
無事に実装できたとのこと安心いたしました。ご記載の処理では、
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 am 1 Mär. 2021
ご回答ありがとうございました。空の行を削除していることが確認できました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!