2009-07-17 63 views
10

Tôi nhận thấy đây là một chủ đề rộng, nhưng tôi đang tìm kiếm một mồi tốt về phân tích ý nghĩa từ văn bản, lý tưởng trong Python. Như một ví dụ về những gì tôi đang tìm cách để làm, nếu một người dùng thực hiện một bài viết trên blog như:Phân tích ý nghĩa từ văn bản

"Manny Ramirez làm cho lợi nhuận của mình cho Dodgers ngày nay so với đồng Houston Astros",

một trọng lượng nhẹ là những gì/cách dễ dàng để nhận được danh từ trong một câu? Để bắt đầu, tôi nghĩ rằng tôi sẽ giới hạn nó vào danh từ thích hợp, nhưng tôi sẽ không muốn bị giới hạn chỉ đó (và tôi không muốn dựa vào một regex đơn giản mà giả định bất cứ điều gì Tiêu đề Capped là một danh từ thích hợp).

Để làm cho câu hỏi này trở nên tồi tệ hơn, những điều tôi không yêu cầu là gì? Tôi có cần một tập hợp các từ hiện có để bắt đầu không? Tôi cần biết những công cụ phân tích từ vựng nào để thực hiện công việc này? Tôi đã đi qua one other question về chủ đề này và tôi đang đào bới các tài nguyên đó ngay bây giờ.

Trả lời

8

Sử dụng NLTK, đặc biệt chapter 7 on Information Extraction.

Bạn nói rằng bạn muốn trích xuất ý nghĩa, và có module để phân tích ngữ nghĩa, nhưng tôi nghĩ rằng IE là tất cả các bạn cần - và trung thực một trong những các khu vực duy nhất của máy tính NLP có thể xử lý ngay bây giờ.

Xem phần 7.5 và 7.6 trên các chủ đề phụ của Công nhận tên thực thể (để phân loại và phân loại Manny Ramerez là một người, Dodgers là tổ chức thể thao và Houston Astros là một tổ chức thể thao khác hoặc bất kỳ điều gì phù hợp với miền của bạn) . Có một NER chunker mà bạn có thể cắm một khi bạn đã cài đặt NLTK. Từ tấm gương đó, giải nén một thực thể địa lý-chính trị (GPE) và một người:

>>> sent = nltk.corpus.treebank.tagged_sents()[22] 
>>> print nltk.ne_chunk(sent) 
(S 
    The/DT 
    (GPE U.S./NNP) 
    is/VBZ 
    one/CD 
    ... 
    according/VBG 
    to/TO 
    (PERSON Brooke/NNP T./NNP Mossman/NNP) 
    ...) 

Lưu ý bạn vẫn sẽ cần phải biết tokenization và gắn thẻ, như đã trình bày trong các chương trước, để có được văn bản của bạn ở định dạng phù hợp cho các tác vụ IE này.

10

Bạn cần phải xem Natural Language Toolkit, chính xác là loại điều này.

Phần này của cuốn cẩm nang trông rất có liên quan: Categorizing and Tagging Words - đây là một chiết xuất:

>>> text = nltk.word_tokenize("And now for something completely different") 
>>> nltk.pos_tag(text) 
[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'), 
('completely', 'RB'), ('different', 'JJ')] 

Ở đây chúng ta thấy rằng là CC, một liên từ đẳng; bây giờhoàn toàn là RB hoặc trạng từ; cho là IN, một giới từ; một cái gì đó là NN, danh từ; và khác nhau là JJ, tính từ.

1

Đây là một chủ đề thực sự phức tạp. Nói chung, loại công cụ này thuộc về phiếu tự trị của Xử lý ngôn ngữ tự nhiên và có xu hướng phức tạp nhất. Khó khăn của loại công cụ này chính là lý do tại sao vẫn không có hệ thống hoàn toàn tự động để xử lý dịch vụ khách hàng và các dịch vụ tương tự.

Nói chung, cách tiếp cận đối với nội dung này THỰC SỰ phụ thuộc vào chính xác miền của vấn đề của bạn là gì. Nếu bạn có thể thắng xuống miền vấn đề, bạn có thể đạt được một số lợi ích rất nghiêm trọng; để sử dụng ví dụ của bạn, nếu bạn có thể xác định rằng miền có vấn đề của bạn là bóng chày, thì điều đó mang lại cho bạn một khởi đầu thực sự mạnh mẽ. Thậm chí sau đó, nó là rất nhiều công việc để có được bất cứ điều gì đặc biệt hữu ích đi.

Đối với những gì nó có giá trị, có, một tập hợp các từ hiện có sẽ hữu ích. Quan trọng hơn, việc xác định độ phức tạp chức năng mong đợi của hệ thống sẽ rất quan trọng; bạn có cần phải phân tích các câu đơn giản không, hoặc có cần phân tích hành vi phức tạp không? Bạn có thể hạn chế đầu vào thành một bộ tương đối đơn giản không?

3

Điều bạn muốn được gọi là phân tách cụm từ NP (danh từ), hoặc trích xuất.

Some links here

Như đã chỉ ra, đây là công cụ rất vấn đề miền cụ thể. Bạn càng thu hẹp nó, hiệu quả càng cao. Và bạn sẽ phải đào tạo chương trình của bạn trên tên miền cụ thể của bạn.

4

Đây là cuốn sách tôi stumbled khi thời gian gần đây: Natural Language Processing with Python

+0

Ha, tôi vừa thêm vào giỏ hàng của tôi tại Amazon trước khi quay lại đây. Có cái nào tốt không? Tôi đã tự hỏi về việc thiếu đánh giá. – Tom

+0

Dường như nó có mô tả khá phong nha về NTLK - bộ công cụ được đề cập trong một trong những câu trả lời – zakovyrya

7

Natural Language Processing (NLP) là tên cho phân tích, tốt, ngôn ngữ tự nhiên.Nhiều thuật toán và chẩn đoán tồn tại, và nó là một lĩnh vực hoạt động nghiên cứu. Bất kể thuật toán nào bạn sẽ mã hóa, nó sẽ cần phải được đào tạo trên một kho văn bản. Cũng giống như một con người: chúng ta học một ngôn ngữ bằng cách đọc văn bản được viết bởi những người khác (và/hoặc bằng cách nghe những câu được người khác thốt lên).

Trong điều khoản thực tế, hãy xem Natural Language Toolkit. Đối với một nền tảng lý thuyết của bất cứ điều gì bạn đang đi để mã, bạn có thể muốn kiểm tra Foundations of Statistical Natural Language Processing bởi Chris Manning và Hinrich Schütze.

alt text http://nlp.stanford.edu/fsnlp/fsnlp-bigger.jpg

+1

Cuốn sách này là một mồi tuyệt vời cho các khái niệm về NLP thống kê! –

-1

Cụm từ thông dụng có thể trợ giúp trong một số trường hợp. Dưới đây là ví dụ chi tiết: What’s the Most Mentioned Scanner on CNET Forum, sử dụng cụm từ thông dụng để tìm tất cả các trình quét được đề cập trong bài đăng trên diễn đàn CNET.

Trong bài viết, một biểu hiện thường xuyên như vậy được sử dụng:

(?i)((?:\w+\s\w+\s(?:(?:(?:[0-9]+[a-z\-]|[a-z]+[0-9\-]|[0-9])[a-z0-9\-]*)|all-in-one|all in one)\s(\w+\s){0,1}(?:scanner|photo scanner|flatbed scanner|adf scanner|scanning|document scanner|printer scanner|portable scanner|handheld scanner|printer\/scanner))|(?:(?:scanner|photo scanner|flatbed scanner|adf scanner|scanning|document scanner|printer scanner|portable scanner|handheld scanner|printer\/scanner)\s(\w+\s){1,2}(?:(?:(?:[0-9]+[a-z\-]|[a-z]+[0-9\-]|[0-9])[a-z0-9\-]*)|all-in-one|all in one))) 

để phù hợp với một trong hai điều sau đây:

  • hai chữ, sau đó số mô hình (bao gồm tất cả-trong- một), sau đó là “máy quét”
  • “máy quét”, sau đó một hoặc hai từ, sau đó là số kiểu (bao gồm tất cả-trong-một)

Kết quả là, các văn bản trích từ bài là như thế nào,

  1. ngưng HP C9900A máy quét ảnh
  2. quét x-quang cũ của mình
  3. mới Epson V700 quét
  4. HP ScanJet Máy quét 4850
  5. Máy quét Epson Perfection 3170

Giải pháp biểu thức chính quy này hoạt động theo cách.

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