日本語の認識のご相談

조회 수: 4 (최근 30일)
Hiraku Tokuma
Hiraku Tokuma 2022년 10월 2일
편집: Hiraku Tokuma 2022년 10월 3일
matlabで日本語を入力したものに対して
文節ごとに文字の順番を最初と最後だけ固定してランダムに動かすことは可能でしょうか。
アバウトな質問で恐縮ですが、どうぞよろしくお願いいたします。

채택된 답변

Atsushi Ueno
Atsushi Ueno 2022년 10월 3일
편집: Atsushi Ueno 2022년 10월 3일
上記ドキュメントを参考に2つのラッパー関数をダウンロードしてカレントフォルダに置き、下記コードを実行すると最後の結果が得られました。素晴らしい。
str = "matlabで日本語を入力したものに対してタイポグリセミア現象を起こすことは可能でしょうか。" + ...
"アバウトな質問で恐縮ですが、どうぞよろしくお願いいたします。";
documents = tokenizedDocumentJP(str); % 形態素解析
tkns = tokenDetailsJP(documents); % 形態素解析結果の抽出
idx = tkns.rubi ~= "*"; % "*"以外のrubiを使う。それ以外の句読点等はTokenを使う。
tkns.Token(idx) = tkns.rubi(idx);
for i = 1:size(tkns,1)-1
if tkns.PartOfSpeech(i) == "auxiliary-verb" % 助動詞は
tkns.Token(i+1) = tkns.Token(i) + tkns.Token(i+1); % 次の品詞にくっつける
end
end
tkns(tkns.PartOfSpeech == "auxiliary-verb",:) = []; % くっつけた助動詞を消す
for i = 1:size(tkns,1) % 各単語において最初と最後以外の文字をひっくり返していく
str = char(tkns.Token(i));
if length(str) <= 3
continue; % 単語が3文字以下なら何もしない
end
prt = str(2:end-1); % 単語の2文字目~最後から1文字前まで取り出す
tkns.Token(i) = string([str(1) prt(randperm(strlength(prt))) str(end)]); % ひっくり返してくっつける
end
strjoin(tkns.Token') % 表示してみる
ans = "maatlb デ ニンホゴ ヲ ニリウュョク シ タモノ ニシイタテ タポセイリミグア ゲションウ ヲ オコス コト ハ カノウ デショウカ 。 アウバト ナモシツン デ キョシウュク デスガ 、 ドウゾ ヨシロク オネガイ イマシタス。"

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Text Analytics Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!