Created
April 28, 2015 12:10
-
-
Save KingC100/3c365b213000e30414b7 to your computer and use it in GitHub Desktop.
tweets.csvを形態素解析するあれ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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