2015-02-05 1 views
1

Lucene의 StandardTokenizer을 비 IR 환경에서 단어 토큰 화에 활용할 생각입니다.Lucene의 StandardTokenizer를 사용할 때 구두점 문자 유지

이 토크 나이저는 구두점 문자를 제거합니다. 아무도 별도의 토큰으로 구두점 문자를 출력한다는 것을 알고 있습니까? 현재 동작의

예 : 원하는 동작의

Welcome, Dr. Chasuble! => Welcome Dr. Chasuble 

예 :

Welcome, Dr. Chasuble! => Welcome , Dr. Chasuble ! 
+2

당신은 즉 정규 표현식 단어 경계에 분할하는 토크 나이 패턴 다음에 공백 토크 나이를 사용할 수'\ – arun

답변

2

일반적으로, 모두 IR 및 비 IR 내용의 사용자 정의 토큰에 대한 ICU를 (사용하는 것이 좋습니다 ICU4J는 Java 버전입니다.) 이것은 시작할 수있는 좋은 장소입니다. http://userguide.icu-project.org/boundaryanalysis

까다로운 부분은 기간을 "Dr."의 일부로 유지하는 것입니다. 사전 기반 반복자를 사용해야합니다. ICU에서 여러 정규식 스타일 정의가있는 파일로 만들 수있는 코드에서 또는 자체 반복자를 만들어 자신 만의 경험적 방법을 구현할 수도 있습니다.

+1

주셔서 감사합니다 포인터 및 제안에 대한 많은 b'. Apache Lucene의 [UAX29URLEmailTokenizer] (https://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_4_10_2/lucene/analysis/common/src/java/org/apache/lucene/analysis/)를 활용했습니다. 표준/UAX29URLEmailTokenizerImpl.jflex) JFlex 문법, [this] (http://stackoverflow.com/questions/7846305/generating-a-custom-tokenizer-for-new-tokenstream-api-using-jflex-java- 참조) 스레드. – sam

2

대신 NLP 커뮤니티에서 토큰 화 도구를 사용할 수 있습니다. 일반적으로 이러한 문제는 잘 처리되었습니다.

일부 상용 도구는 스탠포드 corenlp (토큰 화용 개별 구성 요소도 포함)입니다. UIUC의 파이프 라인도이를 능숙하게 처리해야합니다. http://cogcomp.cs.illinois.edu/page/software/

관련 문제