PDI에서 Kuromoji를 사용하여 형태소 분석

경위 등



Pentaho Data Integartion(PDI)상에서 형태소 해석할 필요가 있었으므로 조사와 메모.

PDI가 Java로 구현되어 있기 때문에 호출하기 쉽도록 Java의 형태소 해석기를 조사했는데, Kuromoji가 있었으므로, 그쪽을 이용하겠다고 했습니다.
다만, Java로 써 PDI로 부르는 것도 귀찮았으므로, 결국 Jython 경유로 이용하고 있습니다.

사용환경



PDI 7.1
Java 버전 8 업데이트 131
쿠로모지 0.7.7
Jython 2.7.0

설정 절차



PDI는 여기
※해동하면 "data-integration"이라는 디렉토리가 생기는데 이 근처는 할애
※나중에 Java가 필요하므로 사전에 설치해 둔다

Kuromoji GitHub 에서 ZIP 파일을 다운로드하고 압축을 풉니다.
$ pwd
~/data-integration/lib
$ ls kuromoji-0.7.7.jar
kuromoji-0.7.7.jar
$

Jython을 여기에서 StandaloneJar를 다운로드하고 아래에 놓습니다.
$ pwd
~/data-integration/lib
$ ls jython-standalone-2.7.0.jar
jython-standalone-2.7.0.jar
$

실행



PDI를 시작.
$ pwd
~/data-integration
$ ./spoon.sh

기동하면, 다음과 같이 설정한다. 자세한 것은 이미지 아래에 기재.


"데이터 그리드"단계는 몇 가지 적절한 문장을 설정합니다. 이번에는 다음과 같이 했다.
· 테스트합니다.
· Jython으로 형태소 해석합니다.
· Kuromoji를 사용하고 있습니다.

「Script」스텝은, 이하와 같이 설정. 또, 스텝명을 「~.python」로서 둘 필요가 있으므로 주의한다.
from org.atilika.kuromoji import Tokenizer
builder = Tokenizer.builder();

normal = builder.build();
TokensNormal = normal.tokenize(txtdata);

rslist = []
for token in TokensNormal:
  rslist.extend([token.getSurfaceForm() + "," + token.getPartOfSpeech() + "|"])

rs = ''.join(rslist)

"Script"단계 하단의 "Fields"에는 최종적으로 반환하고 싶은 필드를 설정한다. 여기, "rs".

여기까지 설정하면, 「Script」스텝상에서 프리뷰 실행을 실시하면, 다음과 같이 됩니다.


복수의 캐릭터 라인을 연속해 처리하고 있으므로, 1개의 캐릭터 라인을 형태소 해석한 결과는, "|"로 연결합니다.
형태소 해석과 PDI로의 처리를 따로 하고 있어, 번거로움을 느끼고 있는 경우 등에 사용할 수 있는 것이 아닐까 생각합니다.

참고



htp://d. 하테나. 네. jp/k중 20bぅ에/20151224/1450943656
htps //w w. 여기? 코 m/쟈/p로즈 cts/쿠로모지. HTML

좋은 웹페이지 즐겨찾기