Xử lý ngôn ngữ tự nhiên (NLP) là nghiên cứu về sinh thành và hiểu ngôn ngữ tự nhiên của con người một cách tự động. Điều này ngày càng thú vị khi công nghệ máy tính tích hợp vào hầu như mọi ngành. Chúng ta sẽ nghiên cứu một lĩnh vực cụ thể trong NLP: độ đọc hiểu (readability). Đây là việc xác định mức độ đọc hiểu của một văn bản, chỉ ra việc đọc hoặc hiểu văn bản đó khó hay dễ.
Chỉ số đọc hiểu là giá trị số cho biết văn bản khó (hoặc dễ) đọc và hiểu đến mức nào. Có nhiều bài kiểm tra khác nhau để xác định độ đọc hiểu, với các lĩnh vực ứng dụng khác nhau.
"Độ đọc hiểu mô tả sự dễ dàng mà một tài liệu có thể được đọc" [13]. Tồn tại nhiều bài kiểm tra [9] để tính độ đọc hiểu. Các bài kiểm tra này "được coi là dự đoán sự dễ đọc nhưng không phải phương pháp duy nhất xác định độ đọc hiểu".
Một số bài kiểm tra trung lập ngôn ngữ, nhưng có bài phù hợp hơn cho ngôn ngữ cụ thể. Kiến thức về các bài kiểm tra độ đọc hiểu khác nhau là thiết yếu.
| Bài kiểm tra đọc hiểu | Dành cho ngôn ngữ | Mô tả ngắn và công thức |
|---|---|---|
| Automated Readability Index (ARI) | Tiếng Anh | Đo lường khả năng hiểu văn bản. Đầu ra xấp xỉ cấp độ lớp (U.S grade) cần thiết để hiểu văn bản.
ARI = 4.71 * (ký tự/từ) + 0.5 * (từ/câu) - 21.43 |
| Flesch Reading Ease | Tiếng Anh | Chỉ ra độ khó của đoạn văn. Điểm cao = dễ đọc; điểm thấp = khó đọc.
FRE = 206.835 − 1.015*(tổng từ/ tổng câu) − 84.6 * (tổng âm tiết/ tổng từ) |
| Flesch-Kincaid Grade Level | Tiếng Anh | Kết quả là số tương ứng với cấp độ lớp Mỹ.
FKGL = 0.39 * (tổng từ/ tổng câu) + 11.8 * (tổng âm tiết/ tổng từ) - 15.59 |
| Coleman-Liau Index | Tiếng Anh | Đầu ra là cấp độ lớp Mỹ ước lượng cần thiết để hiểu văn bản.
CLI = (5.89 * (ký tự/ từ)) − (30 * (câu/từ)) − 15.8 |
| Gunning Fog Index | Tiếng Anh | Chỉ số năm học chính quy (cấp độ lớp Mỹ) cần để hiểu văn bản ngay lần đầu đọc.
GFI = 0.4 * (( từ/ câu) + 100 * (từ phức tạp/ từ)) |
| Linsear Write | Tiếng Anh | Chỉ số đọc hiểu cho tiếng Anh, phát triển cho Không quân để tính độ đọc hiểu sách hướng dẫn kỹ thuật. Công thức từ Wikipedia:
|
| Rate Index (RIX) | Ngôn ngữ Tây Âu | Dùng cho tài liệu bất kỳ ngôn ngữ Tây Âu. Điểm 0 (rất dễ) đến 55+ (rất khó).
RIX = (Từ dài/ Câu) (từ dài = từ có số ký tự > 6) |
| Lesbarhets Index (LIX) | Ngôn ngữ Tây Âu | Dùng cho tài liệu bất kỳ ngôn ngữ Tây Âu. Chỉ số cho biết cấp độ lớp. Dưới 0.1 là lớp 1, 7.2 trở lên là cấp đại học.
LIX = (tổng từ/ tổng câu) + (từ dài/ tổng từ * 100) (từ dài = từ có số ký tự > 6) |
Ví dụ, dưới đây là chương trình dùng chỉ số Flesch để xác định độ đọc hiểu của file văn bản.
Giả định
| Chỉ số Flesch | Cấp độ đọc hiểu |
|---|---|
| 0-30 | Đại học (College) |
| 50-60 | Trung học (High School) |
| 90-100 | Lớp 4 (Fourth Grade) |
Từ trên, công thức Flesch-Kincaid Grade Level dùng để tính cấp độ lớp tương đương G:
FKGL = 0.39 * (tổng từ/ tổng câu) + 11.8 * (tổng âm tiết/ tổng từ) - 15.59
Mã chương trình
import os
dire = os.getcwd()
listOfdir = os.listdir(dire)
while True:
UserFileName = input('Enter file name:')
if (UserFileName in listOfdir) and (UserFileName.endswith(".txt")):
InputFile = open(UserFileName, 'r')
text = InputFile.read()
sentence = text.count('.') + text.count('!') + text.count(';') + text.count(':') + text.count('?')
words = len(text.split())
syllable = 0
for word in text.split():
for vowel in ['a','e','i','o','u']:
syllable += word.count(vowel)
for ending in ['es','ed','e']:
if word.endswith(ending):
syllable -= 1
if word.endswith('le'):
syllable += 1
G = round((0.39*words)/sentence + (11.8*syllable)/words - 15.59)
if G >= 0 and G <= 30:
print('The Readability level is College')
elif G >= 50 and G <= 60:
print('The Readability level is High School')
elif G >= 90 and G <= 100:
print('The Readability level is fourth grade')
print('This text has %d words' % (words))
elif UserFileName not in listOfdir:
print('This text file does not exist in current directory')
elif not(UserFileName.endswith('.txt')):
print('This is not a text file.')
Kết quả
Enter file name: dataVisualization.txt The Readability level is College This text has 64 words