2010-06-09 4 views
3

문자열 목록 (이 경우 회사 이름)과 주로 구조화되지 않은 텍스트에서 회사 이름처럼 보이는 목록을 추출하는 Java 프로그램이 있습니다. 추출 된 텍스트의 각 요소를 목록의 문자열과 일치시켜야합니다. 주의 사항 : 구조화되지 않은 텍스트에는 "Blah, Inc."와 같은 오타가 있습니다. "Blah"라고하는 등등. 나는 Levenshtein Edit Distance를 시도했지만 예상 할 수없는 이유로 실패합니다. 이 문제를 해결하기위한 최선의 방법이 알려져 있습니까? 아니면 수동 데이터 입력으로 돌아가나요?명명 된 엔티티의 명확한 정의

답변

3

이것은 간단한 문제가 아니며 문제를 해결하려고 노력하는 회사 전체가 있습니다 (회사 이름과 같은 일치하는 집합이 축소 된 경우 라 할지라도).

회사 이름이 유효한 패턴의 개별 번호를 식별 할 수 있고 해당 노이즈가 들어 가지 않으면 일련의 정규식 일치로 처리 할 수 ​​있습니다.

패턴이 어렵거나 너무 많으면 베이지안 네트워크와 같은 확률 모델을 개발할 수 있습니다. 교육을 위해 데이터의 하위 집합을 가져오고, 빠른 유효성 검사를 위해 두 번째 하위 집합을 가져 와서 네트워크를 확장하십시오. 기술은 유전 프로그래밍이나 신경망 설정을 포함 할 수 있습니다. 이 방법은 분명히 경량이 아니므로이 길을 떠나기 전에 신중하게 고려해야 할 사항입니다.

2

우리 회사에서하는 일에서 우리는 항상 이런 종류의 문제를 다루고 있습니다. 필자가 보아온 가장 성공적인 노력은 불과 몇 페이지의 파이썬 코드를 사용하는 것입니다. 파이썬은 문자열 해부 및 분석에 탁월하며 Java 프로그램에서 파이썬 루틴을 호출 할 수 있습니다. 그렉 (Greg)이 말했듯이 정답은 구조화되지 않은 텍스트의 품질에 크게 의존합니다. 시작하는 좋은 방법은 골든 텍스트와 어떻게 일치 하는지를 정량적으로 특성화하는 것입니다. 예를 들어, "Blah"대신 "Blah"및 "BLAH INC"와 같은 몇 가지 공통 대체 문자열을 추가하여 80 %를 일치시킬 수 있습니다.

4

Apache Stanbol, 그것은 NER 엔진을 연결합니다 (당신이 제공하는 지명 사전을 기반으로합니다) 그리고 엔진을 연결하여 탐지 된 엔티티를 해결하십시오. 나는 그것을 직접 사용하지 않았으며 여전히 배양기에 있지만 당신이 찾고있는 것에 어울릴 수 있습니다.

이 공간에는 TAC 지식 기반 채우기 트랙 (Entity Linking)에 대한 연구가 약간 있습니다. 다른 장소에서 작업이 팝업되고 ACL, EMNLP, SIGIR 등과 같은 회의에서 행운을 빕니다 (이 목록은 결코 완전한 것이 아닙니다).

TAC 시스템은 Wikipedia의 하위 집합과 연결됩니다.이 페이지는 기본적으로 특정 페이지의 별명 인 "리디렉션"을 가지고 있기 때문에 이름 변형에 도움이 될 수 있습니다.

예를 들어, 다음 페이지는 "Apple Inc."로 리디렉션되지만, 원시 Wikipedia 덤프 또는 DBPedia 또는 Freebase과 같은 깨끗한 소스에서 리디렉션을 추출하려고합니다.

  • AAPL
  • 애플 회사
  • 애플 컴퓨터
  • 애플 컴퓨터 주식
  • 애플 컴퓨터 사
  • 애플 컴퓨터 통합
  • 된 Apple Computer, Inc의
  • 애플 컴퓨터, Inc.
  • 애플 Inc의
  • 애플 통합하십시오
  • 애플 법인
  • 애플 compputer
  • 애플이
  • 애플 INC inc를
  • 애플 컴퓨터 Inc의.
  • ...