Chunking & trích xuất thông tin
Chunking là gì?
Chunking, một trong những quy trình quan trọng trong xử lý ngôn ngữ tự nhiên, được sử dụng để xác định các phần của giọng nói (POS) và các cụm từ ngắn. Nói cách khác, với phân đoạn, chúng ta có thể có được cấu trúc của câu. Nó còn được gọi làpartial parsing.
Các mẫu và chi tiết nhỏ
Chunk patternslà các mẫu thẻ part-of-speech (POS) xác định loại từ nào tạo thành một đoạn. Chúng ta có thể xác định các mẫu phân đoạn với sự trợ giúp của các biểu thức chính quy đã sửa đổi.
Hơn nữa, chúng ta cũng có thể xác định các mẫu cho loại từ nào không nên có trong một đoạn và những từ không tách này được gọi là chinks.
Ví dụ triển khai
Trong ví dụ dưới đây, cùng với kết quả phân tích cú pháp câu “the book has many chapters”, có một ngữ pháp cho các cụm danh từ kết hợp cả một mẫu và một mẫu -
import nltk
sentence = [
("the", "DT"),
("book", "NN"),
("has","VBZ"),
("many","JJ"),
("chapters","NNS")
]
chunker = nltk.RegexpParser(
r'''
NP:{<DT><NN.*><.*>*<NN.*>}
}<VB.*>{
'''
)
chunker.parse(sentence)
Output = chunker.parse(sentence)
Output.draw()
Đầu ra
Như đã thấy ở trên, mẫu để chỉ định một đoạn là sử dụng dấu ngoặc nhọn như sau:
{<DT><NN>}
Và để chỉ định một chink, chúng ta có thể lật các dấu ngoặc nhọn như sau:
}<VB>{.
Bây giờ, đối với một loại cụm từ cụ thể, các quy tắc này có thể được kết hợp thành một ngữ pháp.
Trích xuất thông tin
Chúng tôi đã xem xét các trình kích hoạt cũng như trình phân tích cú pháp có thể được sử dụng để xây dựng công cụ khai thác thông tin. Hãy cho chúng tôi xem đường dẫn khai thác thông tin cơ bản -
Khai thác thông tin có nhiều ứng dụng bao gồm -
- Kinh doanh thông minh
- Tiếp tục thu hoạch
- Phân tích phương tiện
- Phát hiện tình cảm
- Tìm kiếm bằng sáng chế
- Quét email
Nhận dạng thực thể được đặt tên (NER)
Nhận dạng thực thể được đặt tên (NER) thực sự là một cách trích xuất một số thực thể phổ biến nhất như tên, tổ chức, vị trí, v.v. Hãy để chúng tôi xem một ví dụ đã thực hiện tất cả các bước tiền xử lý như mã hóa câu, gắn thẻ POS, phân khúc, NER, và đi theo đường ống được cung cấp trong hình trên.
Thí dụ
Import nltk
file = open (
# provide here the absolute path for the file of text for which we want NER
)
data_text = file.read()
sentences = nltk.sent_tokenize(data_text)
tokenized_sentences = [nltk.word_tokenize(sentence) for sentence in sentences]
tagged_sentences = [nltk.pos_tag(sentence) for sentence in tokenized_sentences]
for sent in tagged_sentences:
print nltk.ne_chunk(sent)
Một số công nhận thực thể được đặt tên (NER) đã sửa đổi cũng có thể được sử dụng để trích xuất các thực thể như tên sản phẩm, thực thể y tế sinh học, tên thương hiệu và nhiều hơn nữa.
Trích xuất quan hệ
Khai thác quan hệ, một hoạt động khai thác thông tin thường được sử dụng khác, là quá trình trích xuất các mối quan hệ khác nhau giữa các thực thể khác nhau. Có thể có các mối quan hệ khác nhau như kế thừa, từ đồng nghĩa, tương tự, v.v., mà định nghĩa của chúng phụ thuộc vào nhu cầu thông tin. Ví dụ: giả sử nếu chúng ta muốn tìm viết của một cuốn sách thì quyền tác giả sẽ là mối quan hệ giữa tên tác giả và tên sách.
Thí dụ
Trong ví dụ sau, chúng tôi sử dụng cùng một đường dẫn IE, như được hiển thị trong sơ đồ trên, chúng tôi đã sử dụng cho đến quan hệ Thực thể được đặt tên (NER) và mở rộng nó bằng một mẫu quan hệ dựa trên các thẻ NER.
import nltk
import re
IN = re.compile(r'.*\bin\b(?!\b.+ing)')
for doc in nltk.corpus.ieer.parsed_docs('NYT_19980315'):
for rel in nltk.sem.extract_rels('ORG', 'LOC', doc, corpus = 'ieer',
pattern = IN):
print(nltk.sem.rtuple(rel))
Đầu ra
[ORG: 'WHYY'] 'in' [LOC: 'Philadelphia']
[ORG: 'McGlashan & Sarrail'] 'firm in' [LOC: 'San Mateo']
[ORG: 'Freedom Forum'] 'in' [LOC: 'Arlington']
[ORG: 'Brookings Institution'] ', the research group in' [LOC: 'Washington']
[ORG: 'Idealab'] ', a self-described business incubator based in' [LOC: 'Los Angeles']
[ORG: 'Open Text'] ', based in' [LOC: 'Waterloo']
[ORG: 'WGBH'] 'in' [LOC: 'Boston']
[ORG: 'Bastille Opera'] 'in' [LOC: 'Paris']
[ORG: 'Omnicom'] 'in' [LOC: 'New York']
[ORG: 'DDB Needham'] 'in' [LOC: 'New York']
[ORG: 'Kaplan Thaler Group'] 'in' [LOC: 'New York']
[ORG: 'BBDO South'] 'in' [LOC: 'Atlanta']
[ORG: 'Georgia-Pacific'] 'in' [LOC: 'Atlanta']
Trong đoạn mã trên, chúng ta đã sử dụng một kho ngữ liệu có sẵn tên là ieer. Trong ngữ liệu này, các câu được gắn thẻ cho đến quan hệ Thực thể được đặt tên (NER). Ở đây chúng ta chỉ cần xác định mẫu quan hệ mà chúng ta muốn và loại NER mà chúng ta muốn quan hệ xác định. Trong ví dụ của chúng tôi, chúng tôi đã xác định mối quan hệ giữa một tổ chức và một vị trí. Chúng tôi trích xuất tất cả các kết hợp của các mẫu này.