Skip to content

Instantly share code, notes, and snippets.

@KingC100
Created April 28, 2015 12:10
Show Gist options
  • Save KingC100/3c365b213000e30414b7 to your computer and use it in GitHub Desktop.
Save KingC100/3c365b213000e30414b7 to your computer and use it in GitHub Desktop.
tweets.csvを形態素解析するあれ
package myshowtime;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import org.atilika.kuromoji.Token;
import org.atilika.kuromoji.Tokenizer;
/**
* kuromoji使ってtweets.csvを形態素解析
*
* @author Kiichi
*/
public class MyShowTime {
public static void main(String[] args) throws IOException {
Tokenizer tokenizer = Tokenizer.builder().build();
String oneLine;
BufferedReader r_Buff = null;
BufferedWriter w_Buff = null;
r_Buff = new BufferedReader(new FileReader("tweets.csv"));
w_Buff = new BufferedWriter(new FileWriter("results.csv"));
String surfaceForm = null;
String partOfSpeech = null;
// ファイル末尾まで読む
while ((oneLine = r_Buff.readLine()) != null) {
List<Token> tokens = tokenizer.tokenize(oneLine);
for (Token token : tokens) {
// tweet本文
surfaceForm = token.getSurfaceForm();
// tweetの品詞
partOfSpeech = token.getPartOfSpeech();
// isNounメソッドで意味のある単語か判断する
if (isNoun(surfaceForm, partOfSpeech)) {
w_Buff.write(surfaceForm);
w_Buff.newLine();
}
}
}
w_Buff.close();
}
/**
* tweet内容が意味のある単語であるか判断
*
* @param surfaceForm tweetの本文
* @param partOfSpeech tweetの品詞
* @return 単語であればtrue, 単語でなければfalse.
*/
public static Boolean isNoun(String surfaceForm, String partOfSpeech) {
// Luceneの使い方分からずベタ書きで除外条件書いたyurushite
if (partOfSpeech.startsWith("名詞,数")
|| partOfSpeech.startsWith("名詞,サ変接続")
|| partOfSpeech.startsWith("記号")
|| partOfSpeech.startsWith("助詞")
|| partOfSpeech.startsWith("助動詞")
|| partOfSpeech.startsWith("接続詞")
|| partOfSpeech.startsWith("その他")
|| partOfSpeech.startsWith("非言語音")
|| partOfSpeech.startsWith("フィラー")
|| surfaceForm.matches("の|に|は|を|た|が|で|て|と|し|れ|さ|ある|いる|も|する|から|な|こと|として|い|や|れる|など|なっ|ない|この|ため|その|あっ|よう|また|もの|という|あり|まで|られ|なる|へ|か|だ|これ|によって|により|おり|より|による|ず|なり|られる|において|ば|なかっ|なく|しかし|について|せ|だっ|その後|できる|それ|う|ので|なお|のみ|でき|き|つ|における|および|いう|さらに|でも|ら|たり|その他|に関する|たち|ます|ん|なら|に対して|特に|せる|及び|これら|とき|では|にて|ほか|ながら|うち|そして|とともに|ただし|かつて|それぞれ|または|お|ほど|ものの|に対する|ほとんど|と共に|といった|です|とも|ところ|ここ|っ|てる|ー")
|| surfaceForm.matches("゚|html|http|https|to|co|com|jp|ne|photo|Photo|amp|t.co")
|| surfaceForm.matches("[a-zA-Z]")) {
} else {
// System.out.println(surfaceForm);
// System.out.println(partOfSpeech);
return true;
}
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment