Tôi có hơn 30.000 bài viết bằng tiếng Pháp trong một tệp JSON. Tôi muốn thực hiện một số phân tích văn bản trên cả hai bài viết riêng lẻ và trên toàn bộ tập hợp. Trước khi tôi đi xa hơn, tôi bắt đầu với tiêu chí đơn giản:Làm cách nào để gắn thẻ và đoạn văn bản tiếng Pháp bằng NLTK và Python?
- Xác định các đối tượng quan trọng (người, địa điểm, khái niệm)
- Tìm những thay đổi đáng kể trong tầm quan trọng (~ = tần số) của các đơn vị theo thời gian (sử dụng số thứ tự bài viết như là một proxy cho thời gian)
các bước tôi đã lấy cho đến nay:
nhập dữ liệu vào một danh sách python:
import json json_articles=open('articlefile.json') articlelist = json.load(json_articles)
chọn một bài báo duy nhất để kiểm tra, và nối phần nội dung vào một chuỗi duy nhất:
txt = ' '.join(data[10000]['body'])
Loaded một câu tokenizer Pháp và chia chuỗi thành một danh sách các câu:
nltk.data.load('tokenizers/punkt/french.pickle') tokens = [french_tokenizer.tokenize(s) for s in sentences]
Đã cố gắng chia các câu thành các từ bằng cách sử dụng WhiteSpaceTokenizer:
from nltk.tokenize import WhitespaceTokenizer wst = WhitespaceTokenizer() tokens = [wst.tokenize(s) for s in sentences]
Đây là nơi tôi đang gặp khó khăn, vì những lý do sau đây:
- NLTK không có một built-in tokenizer mà có thể chia nhỏ thành các từ tiếng Pháp. Không gian trắng không hoạt động tốt, đặc biệt là do thực tế nó sẽ không tách biệt chính xác trên các dấu nháy đơn.
- Ngay cả khi tôi sử dụng cụm từ thông dụng để tách thành từng từ, không có trình gắn thẻ PoS của Pháp (phần lời nói) mà tôi có thể sử dụng để gắn thẻ những từ đó và không có cách nào để tách chúng thành các đơn vị logic có nghĩa là
Đối với tiếng Anh, tôi có thể tag và đoạn văn bản như sau:
tagged = [nltk.pos_tag(token) for token in tokens]
chunks = nltk.batch_ne_chunk(tagged)
tùy chọn chính của tôi (theo thứ tự ưu tiên hiện nay) dường như là:
- Sử dụng nltk-trainer để đào tạo người gắn thẻ và chunker của riêng tôi.
- Sử dụng trình bao bọc python cho TreeTagger chỉ cho phần này, vì TreeTagger đã có thể gắn thẻ tiếng Pháp và một người nào đó đã viết một trình bao bọc gọi là nhị phân TreeTagger và phân tích kết quả.
- Sử dụng một công cụ hoàn toàn khác.
Nếu tôi phải làm (1), tôi hình dung rằng tôi sẽ cần tạo kho dữ liệu được gắn thẻ của riêng mình. Điều này có đúng không, hoặc có thể (và đã được nhận) để sử dụng Treebank của Pháp không?
Nếu định dạng tập tin Treebank của Pháp (example here) không phù hợp để sử dụng với nltk-trainer, có khả thi để chuyển đổi thành định dạng như vậy không?
Phương pháp tiếp cận nào có người dùng nói tiếng Pháp của NLTK được đưa đến thẻ PoS và văn bản đoạn văn?
+1 WordPunctTokenizer. Nếu có một Treebank của Pháp, thì đó có thể là một nguồn tài nguyên tuyệt vời để đào tạo một người gắn thẻ pos. Và nếu nó đòi hỏi phải tạo một trình đọc tập tin tùy chỉnh, thì tôi chắc chắn NLTK sẽ rất vui khi đưa nó vào. Khi bạn đã thực hiện điều đó, nltk-trainer hỗ trợ chỉ định một trình đọc tập tin tùy chỉnh. – Jacob
Cảm ơn Alexis và Jacob. Tôi không biết một tập hợp được gắn thẻ hiện có của tiếng Pháp, vì vậy tôi có thể sẽ thử TreeTagger trước. Như bạn nói, nó có thể dễ dàng hơn việc viết một trình đọc văn bản tùy chỉnh để đọc Treebank của Pháp. Cảm ơn bạn đã đề xuất lại: danh sách gửi thư của người dùng nltk. Tôi đã đọc một số bài đăng trước đó trên lưu trữ web nhưng đã quên đăng ký. – Rahim