Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python(NLP)の可読性インデックス?


自然言語処理は、自然言語の自動生成と理解の研究です。コンピュータ技術が今日ほとんどすべての産業に統合されているので、これは解決するためにますます興味深いタスクになりつつあります。自然言語処理内の1つの特定の分野を研究します。読みやすさ。これには、テキストの読みやすさを判断するというトピックが含まれます。これは、テキストを読んだり理解したりするのがどれほど難しいかを示しています。

読みやすさの指標は、テキストを読んで理解することがどれほど難しいか(または簡単か)を示す数値です。読みやすさを判断するためのいくつかの異なるテストがあり、それらには異なる使用分野があります。

「読みやすさは、ドキュメントを読みやすくすることを意味します」[13]。読みやすさを計算するためのさまざまなテスト[9]があります。読みやすさのテストは、「読みやすさの予測であると考えられていますが、読みやすさを判断する唯一の方法ではありません」

一部のテストは言語に依存しませんが、特定の言語により適したテストがいくつかあります。さまざまな読みやすさテストの知識は私たちにとって不可欠です。

読みやすさのテスト-
(言語)を対象-
簡単な説明と数式-
自動読みやすさ指数(ARI)
英語
テキストの理解度を測定するように設計されています。出力は、テキストを理解するために必要な米国のグレードレベルのおおよその表現です。
ARI = 4.71 * (characters/words) 
+ 0.5 * (words/sentence) -21.43

フレッシュリーディングのしやすさ

英語
リーディングパッセージの理解がいかに難しいかを示すように設計されています。スコアが高いほど、読みやすい資料を示します。数字が小さいほど読みにくい文章になります。
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 Index
英語
テキストの理解度を測定するように設計されています。出力は、テキストを理解するために必要と思われる米国のグレードレベルのおおよそのものです。
CLI = (5.89 * (characters/ words)) − 
(30 *(sentences/words)) − 15.8

Gunning Fog Index
英語
英語の文章のサンプルの読みやすさを測定するように設計されています。結果のインデックスは、最初の読書でテキストを簡単に理解するために人が必要とする正式な教育の年数(米国の成績)を示します。
GFI = 0.4 * (( words/ sentence) + 
100 * (complex words/ words))
Linsear write
英語
空軍が技術マニュアルの読みやすさを計算するのに役立つように開発された、英語のテキストの読みやすさの指標。ウィキペディアの公式:
  • あなたの文章から100語のサンプルを見つけてください。

  • 簡単な単語(2音節以下として定義)を計算し、a、an、the、およびその他の単純な単語を含めて、各単語の上に数字「1」を置きます。

  • 難しい単語(3音節以上として定義)を計算し、辞書で発音されるように各単語の上に数字「3」を置きます。

  • 簡単な単語の数に「1」を掛けます。

  • ハードワードの数に「3」を掛けます。

  • 前の2つの数字を足し合わせます。

  • その合計を文の数で割ります。

レートインデックス(RIX)
西ヨーロッパ言語
これは、西ヨーロッパのあらゆる言語のドキュメントで使用できるため便利です[3]。出力は、0(非常に簡単)から55+(非常に難しい)の間のスコアです。
RIX = (Long Words/ Sentences)
(long words = words where number of characters > 6)
Lesbarhets Index(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
4年生

上から、フレッシュキンケードの学年レベルの式を使用して、同等の学年レベル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

  1. Pythonプロットの外にテキストを配置する方法は?

    プロットの外にテキストを配置するには、 text_pos_xの値を変更してテキストの位置を変更できます。 およびtext_pos_y ステップ xとyのデータポイントを作成します。 xとyのテキスト位置を初期化します。 xとyをプロットするには、 color =red でplot()メソッドを使用します 。 text()メソッドを使用して、図にテキストを追加します。 図を表示するには、 show()を使用します メソッド。 例 import numpy as np from matplotlib import pyplot as plt plt.rcParams["figu

  2. PythonでNLTKを使用してテキストをトークン化する

    文字シーケンスと定義されたドキュメント単位が与えられた場合、トークン化は、トークンと呼ばれる断片に切り刻むタスクであり、おそらく同時に句読点などの特定の文字を破棄します。 nltkとpythonのコンテキストでは、これは単に各トークンをリストに入れるプロセスであり、一度に各文字を繰り返す代わりに、トークンを繰り返すことができます。 たとえば、入力文字列が与えられた場合- Hi man, how have you been? 出力を取得する必要があります- ['Hi', 'man', ',', 'how', 'have&