tokenizeDo​cumentでトーク​ン化したものをそのま​まSQL データベースに書き込​みする方法はありませ​んでしょうか?

9 views (last 30 days)
寿人
寿人 on 4 Feb 2025
Commented: 寿人 on 5 Feb 2025
Text Analytics Toolbox の tokenizedDocumentでトークン化したものをSQLデータベースに書き込みしたいのですが適合するデータ型が存在しないという認識です。
代替策として下記のような手法をとりましたが、処理が回りくどいように思えます。
他に良い方法はありませんでしょうか。
例)
・トークン化した文章を文字列に変換(例えば '["Hello" "," "World" "."]')
・上記を、データ型=varcharで上記レコードをデータベースに書き込み
・文字列として'["Hello" "," "World" "."]'をデータベースから読込
・", [, ] 等の記号をreplaceで抹消した後に、再度tokenizedDocumentでトークン化

Accepted Answer

Kojiro Saito
Kojiro Saito on 4 Feb 2025
Edited: Kojiro Saito on 4 Feb 2025
tokenizedDocumentのデータ型はそのままデータベースに書き込めないので、stringやcharの文字列に変換する必要があります。また、データベースに書き込んだ後に読み込み直して句読点などを取り除くのはおっしゃるとおり回りくどいので、書き込む前に処理してみてはいかがでしょうか。
%% テキストの前処理
str = [
"An example of a short sentence."
"A second short sentence."];
documents = tokenizedDocument(str); % トークン化
newDocuments = removeStopWords(documents); % aやtheなどのストップワードの除去
newDocuments = erasePunctuation(newDocuments); % ,や.などの句読点の除去
outStr = string(joinWords(newDocuments)); % トークンをstringに変換
%% データベースへの書き込み
conn = database('sql_server', 'username', 'password'); % SQL Serverへの接続
tbl = table(outStr, VariableNames = "txt"); % テーブルに変換する
sqlwrite(conn, 'texttbl', tbl) % データをSQLのテーブルに書き込み
close(conn) % SQL Serverの接続をクローズ
  1 Comment
寿人
寿人 on 5 Feb 2025
ご回答ありがとうございました。記載頂いたコードで解決致しました。
ちなみに、私は"トークンをstringに変換"の部分で、下記のoutStr_1のように処理をしてしまっており、"[" や " の抹消処理を行っていたのですが、こちらも解消出来ました。
doc = "Hello, World.";
tokenized = tokenizedDocument(doc);
outStr_1 = mat2str(tokenized.string);
% outStr_1 is '["Hello" "," "World" "."]'
% "[", " をreplaceで抹消が必要
outStr_2 = string(joinWords(tokenized))
% outStr_2 is "Hello , World ."
% 不要な "[", " が発生しない。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!