チョコミントアイス

プログラミングの勉強をしており問題をやっている最中ですが、まわりに聞ける人もおらず,正解もわからず苦戦しております。そこでプログラミングができる方に教えていただきたいです。
まず問題文に「全データを適切なListあるいはMapに収納せよ。」とあり、実際に私もListを使ってデータ内容を収納しました。しかし、それがあっているかどうかわかりません。また収納されたレビューすべてをLIBSVM形式で書き出せと書かれているのですが、そこのやり方がよくわかりません。

おかしな点を指摘していただき、正しいものを教えていただきたいです。そして、わからない部分を詳しく教えてほしいです。

以下は、自分なりのコードを書いてみたものです(恥ずかしながら綺麗でないコードになっていると思います)
≪問題文≫
楽天市場レビューのサンプルデータについて、レビュー1つ分を表すのに適切なクラスを作成せよ。
メインメソッドでデータ(TSV形式)の全てを読み込み、全データを適切なListあるいはMapに収納せよ。
ListあるいはMapに収納されたレビュー全てを、写真のようなLIBSVM形式で書き出せ。

・自分なりのコード
package simonmon;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Simon10 {

public static void main(String[] args) {
try {
File csv = new File("C://Users/bi19029/documents/楽天サンプル/ichiba04_review201001_20140221-sample.tsv");

BufferedReader br = new BufferedReader(new FileReader(csv));

// 最終行まで読み込む
String line = "";
while ((line = br.readLine()) != null) {

// 1行をデータの要素に分割
StringTokenizer st = new StringTokenizer(line, ",");

while (st.hasMoreTokens()) {
// 1行の各要素をタブ区切りで表示
// System.out.print(st.nextToken() + "\t");
// System.out.println();

List<String> list = new ArrayList<>();

list.add(st.nextToken() + "\t");

System.out.println(list);
}
}
br.close();


} catch (FileNotFoundException e) {
// Fileオブジェクト生成時の例外捕捉
e.printStackTrace();
} catch (IOException e) {
// BufferedReaderオブジェクトのクローズ時の例外捕捉
e.printStackTrace();
}


}
}

「プログラムのコードとLIBSVM形式」の質問画像

A 回答 (1件)

> また収納されたレビューすべてをLIBSVM形式で書き出せと書かれているのですが、そこのやり方がよくわかりません。



うん、分からんな(笑)。誰も分からんのじゃないだろうか(笑)。

ええと、調べてみたらLIBSVMっつーのは、国立台湾大学で開発されたSVM(サポートベクターマシン)用のライブラリらしいです。サポートベクターマシンってのは・・・ええと、10年ちょっと前くらいに、統計解析関係で流行った「判別分析」用の手法ですね。機械学習の一分野になんのかな?
ザックリ言うと、古典的な判別分析だと、データをプロットして、二値的にそいつらを一次関数で領域を分ける、と。○と☓に、みたいにね。ただ精度がよく無かった。
それを次元を一つ上げて同じようにやってみたら精度が上がったぞ~、みたいな話になって、その方式を「サポートベクターマシン」って呼んだんですよね。ホンマざっくりと、そういう話なんですが。
で、そいつをJavaでやったりする為のライブラリがLIBSVMらしいです。

んで、ハッキリ言うと、一回LIBSVMをダウンロードして、サンプルが入ってる筈なんで、そいつを自分で調べてみるのが一番でしょう。みんなに「LIBSVMって知ってる?」って訊いても恐らく専門家以外は知らんのでしゃーないですよね。
ライブラリはここにあります。

LIBSVM -- A Library for Support Vector Machines:
https://www.csie.ntu.edu.tw/~cjlin/libsvm/

下の方にJava用の、かつThe latestってのがあるんで、ダウンロードしてインストールしてみてください。Readmeに詳細が書いてある筈です。
・・・・ってか、ぶっちゃけ、「プログラミング初心者用のネタ」じゃないですよ、これ。
    • good
    • 0
この回答へのお礼

ありがとう

回答してくださりありがとうございました
なんども読み返して参考にさせて頂いています
ありがとうございました

お礼日時:2020/08/22 23:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報