2009-03-25 3 views
8

독일어 단어에 대한 형태소 분석을 수행 할 수있는 라이브러리를 찾고 있습니다. 즉, 단어를 루트 형태로 변환하고 분석 된 단어에 대한 메타 정보를 제공합니다. 예를 들어독일어의 형태 학적 분석을위한 무료 라이브러리가 있습니까?

:

gegessen -> essen 
wurde [...] gefasst -> fassen 
Häuser -> Haus 
Hunde -> Hund 

내 위시리스트 :

그것은 명사와 동사 모두 일해야
  • .
  • 독일어의 복잡성 때문에이 작업이 매우 힘들다는 것을 알고 있습니다. 따라서 근사값만을 제공하거나 약 80 % 정확할 수도있는 라이브러리도 찾고 있습니다.
  • 사전과 함께 작동하지 않는 라이브러리가 더 좋겠지 만, 상황에 따라 타협 할 수는 있습니다.
  • 또한 C/C++/Delphi Windows 라이브러리를 선호합니다. .NET, Java, ... 등을 더 쉽게 통합 할 수 있기 때문입니다.
  • 무료 라이브러리 여야합니다. (L) GPL, MPL, ...

편집 : 나는 때문에 불규칙 단어, 전혀 사전없이 형태 학적 분석을 수행 할 수있는 방법이 없다는 것을 알고 있어요. 내가 말할 때 , 나는 내가 각각의 모든 단어를지도하는 전체 날려 사전을 의미 사전없이 도서관을 선호 :

arbeite -> arbeiten 
arbeitest -> arbeiten 
arbeitet -> arbeiten 
arbeitete -> arbeiten 
arbeitetest -> arbeiten 
arbeiteten -> arbeiten 
arbeitetet -> arbeiten 
gearbeitet -> arbeiten 
arbeite -> arbeiten 
... 

그 사전은 거대한 크기와 알 수없는 단어를 처리 할 수없는 등 여러 가지 단점을 가지고있다.

esse -> essen 
isst -> essen 
eßt -> essen 
aß -> essen 
aßt -> essen 
aßen -> essen 
... 

이 (내 마음이 지금 당장 돌고있다 :))

답변

7

나는 "형태소 분석 알고리즘"을 찾고 있다고 생각합니다.

마틴 포터 (Martin Porter)의 접근법은 언어 학자들 사이에서 잘 알려져 있습니다. Porter 스 트리머는 기본적으로 affix 스트리핑 알고리즘이며 이러한 특별한 경우에 대한 몇 가지 대체 규칙과 결합됩니다.

대부분의 스 트리머는 언어 적으로 "잘못된"줄기를 제공합니다. 예를 들면 : "아름답다"와 "아름다움"둘 다 줄기 "beauti"를 초래할 수 있습니다. 물론 이것은 실제 단어가 아닙니다.하지만 정보 검색 시스템에서 검색 결과를 향상시키기 위해 이러한 줄기를 사용하는 경우에는 문제가되지 않습니다. Lucene은 예를 들어 포터 줄기를 지원합니다.

포터 (Snowman)는 스노우 볼 (Snowball)이라는 스미머 개발을위한 간단한 프로그래밍 언어를 고안했습니다.

또한 스노우 볼 (Snowball)에서 사용할 수있는 독일어의 형태 체계가 있습니다. Snowball 소스에서 생성 된 C 버전은 알고리즘에 대한 일반 텍스트 설명과 함께 웹 사이트에서도 사용할 수 있습니다.

여기에 눈덩이에서 독일 형태소 분석기는 다음과 같습니다 http://snowball.tartarus.org/algorithms/german/stemmer.html

당신이 구글 음성, 당신이해야 할 부분에 대한 정보와 함께 사전에서 찾을 것 같은 단어의 대응 스템을 찾고 있다면 "lemmatization".

2

나는이 사전없이 할 수 있다고 생각하지 않습니다 모든 예외는 사전에 처리 할 수 ​​물론

. 올바른 솔루션 : -> 에센
gegangen -> angen

(독일어 구사하지 못하는 사람들에게주의

규칙 기반 접근 방식은 변함없이

gegessen 같은 것들을 걸려 넘어 질 것이다 두 번째 경우는 "gehen").

+0

당신은 부분적으로 맞다, 나는 내 질문에 업데이트되었습니다. –

1

Leo을 살펴보십시오. 그들은 당신이 후, 아마도 당신에게 몇 가지 아이디어를 제공하는 데이터를 제공합니다.

3

얼마 전에 질문 하셨지만, morphisto으로 시도해보십시오. 여기

우분투에서 작업을 수행하는 방법에 대한 예입니다 :

  1. 을 슈투트가르트 유한 상태 변환기 도구를 설치

    $ sudo는 쉽다 - 얻을 morphisto 형태를 다운로드

  2. sfst 설치 , 예. 모르 피스트 -02022011.a

  3. $ FST 컴팩트 morphisto-02022011.a morphisto-02022011.ac

  4. 을 사용! 다음은 몇 가지 예입니다.

    $ echo Hochzeit | FST-PROC morphisto-02022011.ac ^ Hochzeit/hohZeit < + NN>/hohZeit < + NN>/hohZeit < + NN>/hohZeit < + NN>/HochZeit < + NN>/HochZeit < + NN>/HochZeit < + NN>/HochZeit < + NN>/Hochzeit < + NN>/Hochzeit < + NN>/Hochzeit < + NN>/Hochzeit < + NN> $

    $는 에코 gearbeitet | FST-PROC morphisto-02022011.ac ^ gearbeitet/arbeiten < + ADJ>/arbeiten < + ADJ>/arbeiten < + V> ParZu으로 morphisto를 사용하여 $

5

출력을 명확 것을 의미한다 (면책 조항 : 나는 여기에 내 자신의 오픈 소스 프로젝트를 연결하고 있습니다) http://www.danielnaber.de/morphologie/에서 확인할 수있다

단어 목록의 형태로이 데이터를. 목록에없는 복합 명사를 다루기 위해 워드 스플리터 라이브러리 (예 : jwordsplitter)와 결합 될 수 있습니다.

또는 단어 목록이 컴팩트 유한 상태 컴퓨터의 형태로 포함되어 있고 (또한 화합물 분할 포함) LanguageTool from Java을 사용하십시오.

+2

답변을 게시 해 주셔서 감사합니다. [Self-Promotion에 대한 FAQ] (http://stackoverflow.com/faq#promotion)를주의 깊게 읽으십시오. 또한 자신의 사이트/제품에 링크 할 때마다 면책 조항을 게시하는 것이 필수적입니다. –

3

lemmatisation을위한 표준화 된 오픈 소스 다국어 플랫폼을 제공하는 것을 목표로 한 프로젝트 인 LemmaGen (http://lemmatise.ijs.si/)을 살펴보십시오. 그것은 당신이 원하는 것을 정확히하고 있습니다.

1

모프와 같이 사용할 수있는 몇 가지 도구가 있습니다. Matetools, Morphisto 등의 구성 요소가 포함되어 있습니다.하지만 도구 체인에 통합하는 것이 고통입니다. 꽤 많은 언어 도구를 다루는 아주 좋은 래퍼는 UIMA를 사용하는 프레임 워크 인 DKpro (https://dkpro.github.io/dkpro-core/)입니다. 이 도구를 사용하면 컴퓨터에 자동으로 다운로드되고 서로 이야기하는 서로 다른 리소스의 서로 다른 언어 도구를 사용하여 자신의 전처리 파이프 라인을 작성할 수 있습니다. 자바, 그루비 또는 자이 썬을 사용하여 사용할 수 있습니다. DKPro는 두 개의 형태소 분석기, MateMorphTagger 및 SfstAnnotator에 쉽게 액세스 할 수있게 해줍니다.

포터와 같은 형태소 분석기를 사용하고 싶지 않으면 언어 적으로 의미가 없으며 설명하는 동작이없는 방식으로 단어 양식이 축소됩니다. 당신이 단지 기본형을 찾고 싶다면, 부정사가되는 동사와 명사가 단수 인 경우, 분리 기 (lemmatizer)를 사용해야합니다. 독일어 구제 장치 목록 here을 찾을 수 있습니다. Treetagger가 널리 사용됩니다. SMORS와 같은 형태소 분석기가 제공하는보다 복잡한 분석을 사용할 수도 있습니다. 그것은 당신에게합니다 (SMORS 웹 사이트에서 예)이 같은 줄 것이다 :

을 그리고 여기 prefixation, suffixation을 보여주는 "unübersetzbarstes"과> 그라데이션의 분석이다 않은 < PREF> übersetzen < V> 바 < SUFF은 > < + ADJ> < 섭> < Neut> < 놈> < Sg에> < 세인트>

관련 문제