Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ดัชนีความสามารถในการอ่านใน Python (NLP)?


การประมวลผลภาษาธรรมชาติเป็นการศึกษาเกี่ยวกับการสร้างอัตโนมัติและความเข้าใจภาษามนุษย์ตามธรรมชาติ นี่เป็นงานที่น่าสนใจมากขึ้นในการแก้ปัญหา เนื่องจากเทคโนโลยีคอมพิวเตอร์ถูกรวมเข้ากับเกือบทุกอุตสาหกรรมในปัจจุบัน เราจะศึกษาสาขาวิชาเฉพาะด้านการประมวลผลภาษาธรรมชาติ ความสามารถในการอ่าน เรื่องนี้เกี่ยวข้องกับหัวข้อการกำหนดความสามารถในการอ่านข้อความ สิ่งนี้บ่งชี้ว่าการอ่านหรือทำความเข้าใจข้อความนั้นยากเพียงใด

ดัชนีความสามารถในการอ่านคือค่าตัวเลขที่ระบุว่าการอ่านและทำความเข้าใจข้อความนั้นยาก (หรือง่าย) เพียงใด มีการทดสอบหลายอย่างเพื่อกำหนดความสามารถในการอ่าน และมีขอบเขตการใช้งานที่แตกต่างกัน

"ความสามารถในการอ่านอธิบายความง่ายในการอ่านเอกสาร" [13] มีการทดสอบต่างๆ มากมาย [9] เพื่อคำนวณความสามารถในการอ่าน การทดสอบความสามารถในการอ่าน "ถือเป็นการคาดคะเนความง่ายในการอ่าน แต่ไม่ใช่วิธีเดียวในการพิจารณาความสามารถในการอ่าน"

การทดสอบบางอย่างใช้ภาษาที่เป็นกลาง แต่มีการทดสอบบางอย่างที่เหมาะกับบางภาษามากกว่า ความรู้เกี่ยวกับการทดสอบความสามารถในการอ่านที่แตกต่างกันเป็นสิ่งสำคัญสำหรับเรา

การทดสอบความสามารถในการอ่าน −
มีไว้สำหรับ (ภาษา) −
คำอธิบายและสูตรอย่างย่อ −
ดัชนีความสามารถในการอ่านอัตโนมัติ (ARI)
ภาษาอังกฤษ
ออกแบบมาเพื่อวัดความสามารถในการเข้าใจของข้อความ ผลลัพธ์คือการแสดงระดับชั้นประถมศึกษาในสหรัฐฯ โดยประมาณที่จำเป็นในการทำความเข้าใจข้อความ
ARI = 4.71 * (characters/words) 
+ 0.5 * (words/sentence) -21.43

Flesch อ่านง่าย

ภาษาอังกฤษ
ออกแบบมาเพื่อระบุว่าข้อความที่อ่านเข้าใจยากเพียงใด คะแนนที่สูงขึ้นบ่งบอกถึงเนื้อหาที่อ่านง่ายกว่า ตัวเลขที่ต่ำกว่าทำเครื่องหมายข้อความที่อ่านยากขึ้น
FRE = 206.835 − 1.015*(total words/ 
total sentences) − 84.6 * (total
syllables/ total words)

FleschKincaid ระดับชั้น
ภาษาอังกฤษ
ออกแบบมาเพื่อระบุว่าข้อความที่อ่านเข้าใจยากเพียงใด ผลลัพธ์คือตัวเลขที่ตรงกับระดับชั้นประถมศึกษาในสหรัฐฯ
FKGL = 0.39 * (total words/ total 
sentences) + 11.8 (total syllables/ 
total words) -15.59

ดัชนี Coleman-Liau
ภาษาอังกฤษ
ออกแบบมาเพื่อวัดความสามารถในการเข้าใจของข้อความ ผลลัพธ์คือระดับชั้นประถมศึกษาโดยประมาณของสหรัฐฯ ที่จำเป็นต่อการทำความเข้าใจข้อความ
CLI = (5.89 * (characters/ words)) − 
(30 *(sentences/words)) − 15.8

Gunning Fog Index
ภาษาอังกฤษ
ออกแบบมาเพื่อวัดความสามารถในการอ่านของตัวอย่างการเขียนภาษาอังกฤษ ดัชนีผลลัพธ์คือตัวบ่งชี้จำนวนปีของการศึกษาในระบบ (เกรดสหรัฐฯ) ที่บุคคลต้องการเพื่อให้เข้าใจข้อความในการอ่านครั้งแรกได้ง่ายขึ้น
GFI = 0.4 * (( words/ sentence) + 
100 * (complex words/ words))
Linsear เขียน
ภาษาอังกฤษ
ตัววัดความสามารถในการอ่านสำหรับข้อความภาษาอังกฤษ พัฒนาขึ้นสำหรับกองทัพอากาศเพื่อช่วยคำนวณความสามารถในการอ่านคู่มือทางเทคนิค สูตรจากวิกิพีเดีย:
  • ค้นหาตัวอย่าง 100 คำจากงานเขียนของคุณ

  • คำนวณคำง่าย ๆ (กำหนดเป็นสองพยางค์หรือน้อยกว่า) และใส่ตัวเลข "1" ทับแต่ละคำ ซึ่งรวมถึง a, an, the และคำง่ายๆ อื่นๆ ด้วย

  • คำนวณคำยาก (กำหนดเป็นสามพยางค์ขึ้นไป) และใส่ตัวเลข "3" ทับแต่ละคำตามที่พจนานุกรมออกเสียง

  • คูณจำนวนคำง่าย ๆ ด้วย "1"

  • คูณจำนวนคำยากด้วย "3"

  • บวกเลขสองตัวก่อนหน้าเข้าด้วยกัน

  • หารยอดรวมนั้นด้วยจำนวนประโยค

อัตราดัชนี (RIX)
ภาษายุโรปตะวันตก
มีประโยชน์เพราะสามารถใช้กับเอกสารภาษายุโรปตะวันตกได้ [3] ผลลัพธ์ที่ได้คือคะแนนระหว่าง 0 (ง่ายมาก) ถึง 55+ (ยากมาก)
RIX = (Long Words/ Sentences)
(long words = words where number of characters > 6)
ดัชนี Lesbarhets (LIX)
ภาษายุโรปตะวันตก
มีประโยชน์เพราะสามารถใช้กับเอกสารภาษายุโรปตะวันตก [2][3] ผลลัพธ์คือดัชนีที่ระบุระดับชั้น ดัชนีที่ต่ำกว่า 0.1 คือเกรด 1 ในขณะที่ 7.2 ขึ้นไปเป็นเกรดวิทยาลัย
LIX = (total words/ total sentences) + 
(long words/ total words * 100)
(long words = words where number 
of characters > 6)

ตัวอย่างเช่น ด้านล่างนี้คือโปรแกรมผ่านดัชนีเฟลชเพื่อกำหนดความสามารถในการอ่านของไฟล์ข้อความ

สมมติฐาน

ดัชนีเนื้อ
ไฟล์ข้อความที่อ่านเกรด
0-30
วิทยาลัย
50-60
โรงเรียนมัธยม
90-100
ชั้นประถมศึกษาปีที่สี่

จากข้างบนนี้ จะใช้สูตรระดับเกรด flesch-kincaid เพื่อคำนวณระดับเกรด G ที่เทียบเท่ากัน -

FKGL =0.39 * (จำนวนคำทั้งหมด/ ประโยคทั้งหมด) + 11.8 (จำนวนพยางค์ทั้งหมด/ จำนวนคำทั้งหมด) -15.59

รหัส

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.')

ผลลัพธ์

Enter file name:dataVisualization.txt
The Readability level is College
This text has 64 words