2010-02-23 4 views
8

사용자 생성 텍스트 콘텐츠에 대한 초기 맞춤법 검사/데이터 정규화를 수행 할 자바 라이브러리를 찾고 있는데, Facebook 프로필에 입력 한 관심사를 상상해보십시오.자바의 데이터 정규화를위한 맞춤법 교정

이 텍스트는 맞춤법 보정 전후에 어떤 점에서 토큰 화되며, 그 중 일부는 검색을위한 키로 사용됩니다 (정확한 일치). 맞춤법 오류 등을 줄이면 더 많은 성냥을 만들어 낼 수 있습니다. 정정이 단 한 단어보다 긴 토큰에 대해 잘 수행된다면 더 좋을 것입니다. "트링 킹 커피"는 "커피 마시는 것"이 ​​아니라 "커피를 마시는"것이됩니다.

  1. 재즈이 활성화 개발 될 것 같지 않습니다 :

    내가 맞춤법 교정을 수행하기위한 다음과 같은 자바 라이브러리를 발견했다. 또한 사전 거리 기반 접근법은 소셜 네트워크 프로필 및 다중 단어 토큰에서 비표준 언어를 사용하기 때문에 부적절한 것으로 보입니다.
  2. APACHE LUCENEstatistical spell checker인데 훨씬 적합해야합니다. 여기서 좋은 사전을 만드는 방법에 관한 질문이 있습니까? (그렇지 않으면 Lucene을 사용하지 않으므로 기존 색인이 없습니다.)

모든 의견을 환영합니다!

답변

10

구현하려는 것은 철자 교정자가 아니라 퍼지 검색입니다. Peter Norvig의 에세이는 사전에 대해 조사 된 후보들로부터 퍼지 검색을 구축하기위한 좋은 출발점입니다.

또는 BK-Trees를 살펴보십시오.

n-gram 색인 (Lucene에서 사용)은 더 긴 단어에 대해 더 나은 결과를 생성합니다. 주어진 편집 거리까지 후보자를 만드는 접근법은 보통 텍스트에서 발견되는 단어에 대해서는 충분히 잘 작동하지만 이름, 주소 및 과학 텍스트에는 충분하지 않습니다. 그것은 인덱스 크기를 늘릴 것입니다.

텍스트가 색인 된 경우 텍스트 자료 (사전)가 있습니다. 귀하의 데이터에있는 것만이 어쨌든 발견 될 수 있습니다. 외부 사전을 사용할 필요가 없습니다.

좋은 자료는 Introduction to Information Retrieval - Dictionaries and tolerant retrieval입니다. 상황에 맞는 맞춤법 교정에 대한 간단한 설명이 있습니다.

+0

통찰력있는 의견과 흥미로운 책 링크를 보내 주셔서 감사합니다. 네가 맞다. 내가 정말로 원하는 것은 퍼지 검색이다. 그러나 필자는 맞춤법 검사가 특정 응용 프로그램에 어떻게 작동 하는지를 볼 것이며 나중에 언급 한 아이디어를 다시 방문 할 것입니다. 고마워요! – dareios

0
+0

저는 Norvig의 작은 맞춤법 검사기를 정말 좋아합니다. 그러나 문제는 올바른 텍스트 코퍼스를 선택하는 것입니다 (고급 LUCENE과 마찬가지로). 자유롭게 사용할 수있는 셰익스피어 작품의 빈도를 사용한다고해서 소셜 네트워크 프로파일을 수정하는 데는 도움이되지 않습니다. – dareios

+0

"술 마시는 것"대신에 "속물"이 다루어지지 않는다고 말하는 것입니까? 내가 Norvig의 기사를 다시 읽어야하고 아마도 도움이 될 수 있다고 생각했기 때문에 직접 구현해야 할 것이다. – duffymo

+0

올바른 코퍼스를 선택하는 문제를 언급했습니다. 예를 들어 영문 문헌의 빈도가 아니라 올바른 품질의 소셜 네트워크 데이터에 적합한 빈도를 얻을 수 있습니다. Norvig의 코드를 올바르게 이해한다면 최대 2 단어에 대해서만 편집 거리가 필요합니다. 즉, 단일 단어에는 놀랍게 좋게 작동하고 여러 단어 토큰에는 전혀 작동하지 않습니다. – dareios

2

맞춤법 검사기의 기초로 Lucene 색인을 채우는 것과 관련하여 이것은 문제를 해결하는 좋은 방법입니다. Lucene은 상자 밖의 SpellChecker을 사용할 수 있습니다.

net에서 word dictionaries을 다운로드하여 lucene 색인의 기초로 사용할 수 있습니다. 나는 이것들에 도메인 특유의 많은 텍스트를 보충 할 것을 제안한다. 귀하의 사용자가 중독자라면 의학 논문 및 간행물의 원본 텍스트로 사전을 보완 할 수 있습니다.

+0

재즈가 "충분하다"면 Lucene 색인을 만드는 것이 두 번째 시도라고 생각합니다. – dareios

+0

이 게시물의 두 링크가 모두 깨진 것 같습니다 –