質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Q&A

0回答

647閲覧

java経由でのMeCab使用時に半角、全角英数字が認識されない

nyan1992

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

0グッド

0クリップ

投稿2020/05/15 02:32

編集2022/01/12 10:55

現在、テキストから特定のワードを取得するプログラムを作ろうとしているのですが、先ほどまで正常に形態素解析を行っていましたが英字は半角、全角を問わず、数字は半角の場合、解析をスキップし次のワード解析を始めるようになってしまいました。
(例:5月15日、Sunny day。今日も晴れた。mh3が楽しい。→
[5月, 名詞-副詞可能], [日, 名詞-接尾-助数詞], [、, 記号-読点], [。, 記号-句点], [今日, 名詞-副詞可能], [も, 助詞-係助詞], [晴れ, 動詞-自立], [た, 助動詞], [。, 記号-句点], [3, 名詞-数], [が, 助詞-格助詞-一般], [楽しい, 形容詞-自立], [。, 記号-句点])
コマンドプロント上でMeCabを起動した場合、全単語を正常に形態素解析できます。

以下が現状のコードです。すべての単語を解析するために訂正すべき箇所を教えていただきたいです。

java version "13.0.2" 2020-01-14
mecab of 0.996

java

1public class MecabTest { 2 3 static final String text_path = "C:\test\mail_text.txt"; 4 static final String char_set = "SJIS"; 5 6 public static void main(String args[]) throws IOException { 7 8 Runtime runtime = Runtime.getRuntime(); 9 String str = getText().replaceAll(" ", "").trim().replaceAll("[\r\n]+", "\r\n"); 10 FileCreator(str);//テキストファイルの作成メソッド 11 String[] Command = {"cmd", "/c", "mecab.exe -O simple " + text_path}; 12 13 Process p = null; 14 File dir = new File(//MeCabのbinファイルの場所); 15 try { 16 p = runtime.exec(Command, null, dir); 17 } catch (IOException e) { 18 e.printStackTrace(); 19 } 20 21/** 形態素解析終了まで待機 **/ 22 try { 23 p.waitFor(1, TimeUnit.SECONDS); 24 } catch(InterruptedException e) { 25 e.printStackTrace(); 26 } 27/** ---------------------- **/ 28 29 InputStream is = p.getInputStream(); 30 BufferedReader br = new BufferedReader(new InputStreamReader(is, char_set)); 31 p.destroy(); 32 33 ArrayList<String> words = new ArrayList<String>(); 34 ArrayList<ArrayList<String>> allWords = new ArrayList<ArrayList<String>>(); 35 36 while(true) { 37 try { 38 String line = br.readLine(); 39 if(line == null) { 40 br.close(); 41 break; 42 } else { 43 words.add(line); 44 } 45 } catch(IOException e) { 46 e.printStackTrace(); 47 } 48 } 49 for(int i = 0; i < words.size(); i++) { 50 String[] word = words.get(i).split("\t"); 51 if(word.length == 2) { 52 addword(allWords, word[0], word[1]); 53 } else { 54 addword(allWords, word[0], "EOS"); 55 } 56 } 57 System.out.println(allWords); 58 FileDelete(text_path); 59 } 60}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問