日本語の認識のご相談
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hiraku Tokuma
le 2 Oct 2022
Modifié(e) : Hiraku Tokuma
le 3 Oct 2022
matlabで日本語を入力したものに対して
文節ごとに文字の順番を最初と最後だけ固定してランダムに動かすことは可能でしょうか。
アバウトな質問で恐縮ですが、どうぞよろしくお願いいたします。
0 commentaires
Réponse acceptée
Atsushi Ueno
le 3 Oct 2022
Modifié(e) : Atsushi Ueno
le 3 Oct 2022
上記ドキュメントを参考に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') % 表示してみる
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Language Support dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!