2009-03-25 38 views
8

Tôi đang tìm thư viện có thể thực hiện phân tích hình thái về từ tiếng Đức, nghĩa là nó chuyển đổi bất kỳ từ nào thành dạng gốc và cung cấp thông tin meta về từ được phân tích.Có thư viện miễn phí để phân tích hình thái học tiếng Đức không?

Ví dụ:

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

danh sách mong ước của tôi:

  • Nó phải làm việc với cả danh từ và động từ.
  • Tôi biết rằng đây là một nhiệm vụ rất khó khăn do tính phức tạp của ngôn ngữ Đức, vì vậy tôi cũng tìm kiếm các libar chỉ cung cấp xấp xỉ hoặc chỉ có thể chính xác đến 80%.
  • Tôi thích các thư viện không hoạt động với từ điển, nhưng một lần nữa tôi mở để thỏa hiệp cho các cirumstances.
  • Tôi cũng thích thư viện Windows C/C++/Delphi hơn, bởi vì điều đó sẽ làm cho chúng dễ tích hợp hơn nhưng .NET, Java, ... cũng sẽ làm.
  • Nó phải là một thư viện miễn phí. (L) GPL, MPL, ...

EDIT: Tôi biết rằng không có cách nào để thực hiện một phân tích hình thái mà không cần bất kỳ từ điển nào cả, bởi vì các từ bất quy tắc. Khi tôi nói, tôi thích một thư viện mà không cần một cuốn từ điển Ý tôi là những điển thổi đầy đủ mà bản đồ mỗi từ:

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

Những bộ từ điển có một số nhược điểm, trong đó có kích thước rất lớn và không có khả năng xử lý các từ chưa biết.

Tất nhiên tất cả các trường hợp ngoại lệ chỉ có thể được xử lý với một cuốn từ điển:

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

(Tâm trí tôi đang quay ngay bây giờ :))

Trả lời

7

Tôi nghĩ bạn đang tìm kiếm "thuật toán gốc".

Cách tiếp cận của Martin Porter nổi tiếng trong số các nhà ngôn ngữ học. Porter stemer về cơ bản là một thuật toán rút gọn, kết hợp với một vài quy tắc thay thế cho những trường hợp đặc biệt đó.

Phần lớn các trình tạo gốc cung cấp các nhánh có ký hiệu "không chính xác". Ví dụ: cả hai "đẹp" và "vẻ đẹp" có thể dẫn đến gốc "mỹ", trong đó, tất nhiên, không phải là một từ thực sự.Tuy nhiên, điều này không quan trọng, nếu bạn đang sử dụng những nhánh đó để cải thiện kết quả tìm kiếm trong các hệ thống truy xuất thông tin. Ví dụ: Lucene đi kèm với hỗ trợ cho trình cắm gốc Porter.

Porter cũng nghĩ ra một ngôn ngữ lập trình đơn giản để phát triển thân cây, được gọi là Quả cầu tuyết.

Ngoài ra còn có trình tạo gốc cho tiếng Đức có sẵn trong Snowball. Một phiên bản C, được tạo ra từ nguồn Snowball, cũng có sẵn trên trang web, cùng với lời giải thích văn bản thuần túy của thuật toán.

Đây là Stemmer Đức trong Snowball: http://snowball.tartarus.org/algorithms/german/stemmer.html

Nếu bạn đang tìm kiếm các gốc tương ứng của một từ như bạn sẽ tìm thấy nó trong một cuốn từ điển, cùng với thông tin trên một phần của bài phát biểu, bạn nên Google cho "lemmatization".

2

Tôi không nghĩ rằng điều này có thể được thực hiện mà không một từ điển . cách tiếp cận

dựa trên quy tắc sẽ luôn đi qua những thứ như

gegessen -> essen
gegangen -> angen

(lưu ý đối với những người không nói được tiếng Đức: giải pháp đúng trong trường hợp thứ hai là "gehen").

+0

Bạn đang phần nào đúng, tôi cập nhật câu hỏi của tôi. –

1

Hãy xem Leo. Họ cung cấp dữ liệu mà bạn đang theo dõi, có thể nó cung cấp cho bạn một số ý tưởng.

3

Bạn đã hỏi điều này một thời gian trước đây, nhưng bạn vẫn có thể dùng thử với morphisto.

Dưới đây là một ví dụ về cách làm điều đó trong Ubuntu:

  1. Cài đặt Stuttgart công cụ dò hữu hạn nhà nước

    $ sudo apt-get install sfst

  2. Tải hình thái morphisto , ví dụ morphisto-02022011.a

  3. Thu nhỏ gọn, ví dụ:

    $ fst-compact morphisto-02022011.a morphisto-02022011.ac

  4. Sử dụng nó! Dưới đây là một số ví dụ:

    $ 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> $

    $ echo gearbeitet | fst-proc morphisto-02022011.ac ^ gearbeitet/arbeiten < + ADJ>/arbeiten < + ADJ>/arbeiten < + V> $

5

(Disclaimer: Tôi đang liên kết các dự án mã nguồn mở riêng của tôi ở đây)

này dữ liệu trong hình thức của một danh sách từ có sẵn tại http://www.danielnaber.de/morphologie/. Nó có thể được kết hợp với một thư viện splitter từ (như jwordsplitter) để bao gồm các danh từ ghép không có trong danh sách.

Hoặc chỉ sử dụng LanguageTool from Java, trong đó có danh sách từ được nhúng dưới dạng một máy trạng thái hữu hạn nhỏ gọn (cộng với nó cũng bao gồm tách phân tách).

+2

Cảm ơn bạn đã đăng câu trả lời! Vui lòng đảm bảo đọc kỹ [FAQ on Self-Promotion] (http://stackoverflow.com/faq#promotion). Cũng lưu ý rằng nó là * bắt buộc * mà bạn đăng tuyên bố từ chối trách nhiệm mỗi khi bạn liên kết đến trang web/sản phẩm của riêng bạn. –

3

Hãy xem LemmaGen (http://lemmatise.ijs.si/) là một dự án nhằm mục đích cung cấp nền tảng đa ngôn ngữ nguồn mở chuẩn hóa cho sự lemmatisation. Nó đang làm chính xác những gì bạn muốn.

1

Có một số công cụ mà bạn có thể sử dụng như hình thái. thành phần trong Matetools, Morphisto vv Nhưng nỗi đau là để tích hợp chúng trong chuỗi công cụ của bạn. Một trình bao bọc rất tốt xung quanh khá nhiều công cụ ngôn ngữ này là DKpro (https://dkpro.github.io/dkpro-core/), một khuôn khổ sử dụng UIMA. Nó cho phép bạn viết đường dẫn tiền xử lý của riêng bạn bằng cách sử dụng các công cụ ngôn ngữ khác nhau từ các tài nguyên khác nhau được tải xuống tự động trên máy tính của bạn và nói chuyện với nhau. Bạn có thể sử dụng Java hoặc Groovy hoặc thậm chí Jython để sử dụng nó. DKPro cung cấp cho bạn dễ dàng truy cập vào hai máy phân tích hình thái, MateMorphTagger và SfstAnnotator.

Bạn không muốn sử dụng phần tử gốc như Porter, nó sẽ làm giảm dạng từ theo cách không có ý nghĩa về ngôn ngữ và không có hành vi bạn mô tả. Nếu bạn chỉ muốn tìm hình thức cơ bản, cho một động từ mà có thể là vô danh và cho một danh từ số ít được đề cử, thì bạn nên sử dụng một lemmatizer. Bạn có thể tìm thấy một danh sách các lemmatizers Đức here. Treetagger được sử dụng rộng rãi. Bạn cũng có thể sử dụng một phân tích phức tạp hơn được cung cấp bởi một máy phân tích hình thái như SMORS. Nó sẽ cung cấp cho bạn một cái gì đó như thế này (ví dụ từ trang web SMORS):

Và đây là phân tích của "unübersetzbarstes" cho thấy prefixation, suffixation và> phân cấp: un < PREF> übersetzen < V> thanh < suff > < + ADJ> < Sup> < Neut> < Nôm> < Vn> < St>

Các vấn đề liên quan