Helpex - Trao đổi & giúp đỡ Đăng nhập

Cách sử dụng Apache Open NLP POS Tagger

Theo Wikipedia, gắn thẻ POS  là "quá trình đánh dấu một từ trong văn bản (ngữ liệu) tương ứng với một phần cụ thể của bài phát biểu, dựa trên cả định nghĩa và ngữ cảnh của nó - tức là mối quan hệ của nó với các từ liền kề và có liên quan trong một cụm từ , câu hoặc đoạn văn. Một dạng đơn giản của điều này thường được dạy cho trẻ em ở độ tuổi đi học, trong việc xác định các từ như danh từ, động từ, tính từ, trạng từ, v.v. "

Để bắt đầu, bất kỳ phần nào của bài phát biểu đều được mã hóa - nó được chia thành các mã thông báo và sau đó các mã thông báo này được NLP gắn thẻ theo quy tắc ngữ pháp để xử lý thêm. Gắn thẻ là quá trình xử lý trước cơ bản của bất kỳ máy POS nào để truy xuất văn bản và lập chỉ mục văn bản. Bạn có thể xem ví dụ về mã hóa Apache Open NLP POS tại đây .

Để bắt đầu với việc gắn thẻ OpenNLP, trước tiên, chúng tôi đưa các phần phụ thuộc sau vào  pom.xml tệp.

<dependency>
    <groupId>org.apache.opennlp</groupId>
    <artifactId>opennlp-tools</artifactId>
    <version>1.8.1</version>
</dependency>

OpenNLP cung cấp một mô hình được đào tạo trước có tên là  en-pos-maxent.bin cho bất kỳ việc gắn thẻ POS nào. Để gắn thẻ cho bất kỳ máy POS nào, trước tiên chúng tôi tải en-pos-maxent.bin . Các dòng mã sau sẽ tải mô hình này.

public void initialize() {
 try {
  InputStream modelStream = getClass().getResourceAsStream("/en-pos-maxent.bin");
  model = new POSModel(modelStream);
  tagger = new POSTaggerME(model);
 } catch (IOException e) {
  System.out.println(e.getMessage());
 }
}

Sau khi trình gắn thẻ được khởi chạy, về cơ bản, chúng tôi mã hóa bất kỳ POS nào và áp dụng các thẻ trên chuỗi được mã hóa. Đây là một ví dụ:

public void tag(String sentence) {
 initialize();
 try {
  if (model != null) {
   POSTaggerME tagger = new POSTaggerME(model);
   if (tagger != null) {
    String whitespaceTokenizerLine[] = WhitespaceTokenizer.INSTANCE
     .tokenize(sentence);
    String[] tags = tagger.tag(whitespaceTokenizerLine);
    for (int i = 0; i < whitespaceTokenizerLine.length; i++) {
     String word = whitespaceTokenizerLine[i].trim();
     String tag = tags[i].trim();
     System.out.print(tag + ":" + word + "  ");
    }
   }
  }
 } catch (Exception e) {
  e.printStackTrace();
 }
}

Đầu ra sẽ tương tự như sau cho một câu như Otri đến từ sao Hỏa và cô ấy thích viết mã

NNP:Otri VBZ:is IN:from NNP:Mars CC:and PRP:she VBZ:loves .:coding.

Và đó là nó! Lần tới, chúng ta sẽ xem xét Máy bán hàng POStagger Standford NLP với Maven.

5 hữu ích 0 bình luận 4.9k xem chia sẻ

Có thể bạn quan tâm

loading