回答編集履歴

1

neologdの動作条件について追記しました。

2019/10/13 08:43

投稿

A-pZ
A-pZ

スコア12011

test CHANGED
@@ -27,3 +27,187 @@
27
27
  。 記号,句点,*,*,*,*,。,。,。
28
28
 
29
29
  ```
30
+
31
+
32
+
33
+ --- kuromoji + neologd の動作について追記 ---
34
+
35
+ 2019/10/13 の段階ですが、以下の記事を参考に動作するバージョンに切り替えて実行しています。
36
+
37
+ なお、LuceneやElasticSearchのクラスは依存するライブラリには含まれますが、インストールやビルドなどは一切していません。
38
+
39
+
40
+
41
+ 参考Qiita:[https://qiita.com/aono-masashi/items/c4f2d1b62589938a6238](https://qiita.com/aono-masashi/items/c4f2d1b62589938a6238)
42
+
43
+
44
+
45
+ ただしこのままだと動作できないので、pom.xmlを次のように追加。
46
+
47
+
48
+
49
+ ```xml
50
+
51
+ <?xml version="1.0" encoding="UTF-8"?>
52
+
53
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
54
+
55
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
56
+
57
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
58
+
59
+ <modelVersion>4.0.0</modelVersion>
60
+
61
+ ...(省略)...
62
+
63
+ <repositories>
64
+
65
+ <!-- codelibs.orgを追加 -->
66
+
67
+ <repository>
68
+
69
+ <id>codelibs.org</id>
70
+
71
+ <name>CodeLibs Repository</name>
72
+
73
+ <url>https://maven.codelibs.org/</url>
74
+
75
+ </repository>
76
+
77
+ </repositories>
78
+
79
+ ...(省略)...
80
+
81
+ <dependencies>
82
+
83
+ <dependency>
84
+
85
+ <groupId>com.atilika.kuromoji</groupId>
86
+
87
+ <artifactId>kuromoji-ipadic</artifactId>
88
+
89
+ <version>0.9.0</version>
90
+
91
+ </dependency>
92
+
93
+ <dependency>
94
+
95
+ <groupId>org.codelibs</groupId>
96
+
97
+ <artifactId>elasticsearch-analysis-kuromoji-neologd</artifactId>
98
+
99
+ <version>1.6.0</version>
100
+
101
+ </dependency>
102
+
103
+ <dependency>
104
+
105
+ <groupId>org.codelibs</groupId>
106
+
107
+ <artifactId>lucene-analyzers-kuromoji-ipadic-neologd</artifactId>
108
+
109
+ <version>8.1.0-20190930</version>
110
+
111
+ </dependency>
112
+
113
+ </dependencies>
114
+
115
+ </project>
116
+
117
+ ```
118
+
119
+
120
+
121
+ 実行したサンプルコード:
122
+
123
+ ```java
124
+
125
+ package com.github.apz.java8sample;
126
+
127
+
128
+
129
+ import java.io.IOException;
130
+
131
+ import java.io.StringReader;
132
+
133
+ import java.util.ArrayList;
134
+
135
+ import java.util.List;
136
+
137
+
138
+
139
+ import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
140
+
141
+ import org.codelibs.neologd.ipadic.lucene.analysis.ja.JapaneseTokenizer;
142
+
143
+
144
+
145
+ /**
146
+
147
+ * @author a-pz
148
+
149
+ *
150
+
151
+ */
152
+
153
+ public class KuromojiSample {
154
+
155
+ private List<String> kuromojineologd(String src) {
156
+
157
+ List<String> ret = new ArrayList<>();
158
+
159
+ try (JapaneseTokenizer jt =
160
+
161
+ // JapaneseTokenizerの引数は(ユーザー辞書, 記号を無視するか, モード)
162
+
163
+ new JapaneseTokenizer(null, false, JapaneseTokenizer.Mode.NORMAL)) {
164
+
165
+ CharTermAttribute ct = jt.addAttribute(CharTermAttribute.class);
166
+
167
+ jt.setReader(new StringReader(src));
168
+
169
+ jt.reset();
170
+
171
+ while (jt.incrementToken()) {
172
+
173
+ ret.add(ct.toString());
174
+
175
+ }
176
+
177
+ } catch (IOException e) {
178
+
179
+ e.printStackTrace();
180
+
181
+ }
182
+
183
+ return ret;
184
+
185
+ }
186
+
187
+
188
+
189
+ public static void main(String[] args) {
190
+
191
+ KuromojiSample sample = new KuromojiSample();
192
+
193
+ sample.execute();
194
+
195
+ }
196
+
197
+
198
+
199
+ public void execute() {
200
+
201
+ System.out.println(kuromojineologd("東京スカイツリーできゃりーぱみゅぱみゅとDAIGOがロケしてた。"));
202
+
203
+ System.out.println(kuromojineologd("ヨツンヴァインになれよ。あくしろよ。"));
204
+
205
+ }
206
+
207
+
208
+
209
+ }
210
+
211
+
212
+
213
+ ```