2017-02-28 6 views
0

トラックレビューが有効になってからの変更の合計数を計算して、ワードドキュメントの精度を計算しています。不正確な句読点の使用は1/4印として計算されますが、文法上または文法上の誤りについては完全な1印が控除されます。ワードで使用されるキャリッジリターンの量を読む

現在、すべてのキャリッジリターンは1フルマークとして計算されています。私はこれを完全に取り除くか、1/4マーク減算としてそれを渡すことができます。私は数えるために以下を使用しています。 ; 1/4マーク控除として。

For Each myRevision In ActiveDocument.Revisions 
myRevision.Range.Select 
    If myRevision.Type = wdRevisionInsert Then 
     lngRevisions = Len(Selection.Text) 
     For i = 1 To lngRevisions 
      If Mid(Selection.Text, i, 1) = "," Then 
       punct = punct + 1 
      Else 
      End If 

      If Mid(Selection.Text, i, 1) = "." Then 
       punct = punct + 1 
      Else 
      End If 

      If Mid(Selection.Text, i, 1) = ";" Then 
       punct = punct + 1 
      Else 
      End If 
      If Mid(Selection.Text, i, 1) = "" Then 
       punct = punct + 1 
      Else 
      End If 
     Next i 
     Count = Count + 1 
    Else 
    End If 
Next 

tCorrections = Count + punct * 0.25 - punct 


Accuracy = ((tWords - tCorrections)/tWords) * 100 
Accuracy = Round(Accuracy, 1) 

答えて

0

S(あなたの文字列を分類するための柔軟な方法のためのスロットをカウントするタイプのマッピング(AMAP)を介して、タイプ名(aLabels)のアレイと、データに発生した種類の文字列(SC)を使用)。

Option Explicit 

Dim aLabels : aLabels = Split("Vowels Consants Digits Punctuations EOLs Unclassified") 
ReDim aCounts(UBound(aLabels)) 
Dim sC : sC = "abce1,2." & vbCr 
Dim aMap : aMap = Array(0, 1, 1, 0, 2, 3, 2, 3, 4) 
Dim sD : sD = sC & "d" & sC & "bb111." 
Dim p, i 
For p = 1 To Len(sD) 
    i = Instr(sC, Mid(sD, p, 1)) 
    If 0 = i Then 
     i = UBound(aLabels) 
    Else 
     i = aMap(i - 1) 
    End If 
    aCounts(i) = aCounts(i) + 1 
Next 
For i = 0 To UBound(aLabels) 
    WScript.Echo Right(" " & aCounts(i), 3), aLabels(i) 
Next 

出力:このデモのように、このような生データ(種類の周波数)に基づいて

cscript 42505210.vbs 
    4 Vowels 
    6 Consants 
    7 Digits 
    5 Punctuations 
    2 EOLs 
    1 Unclassified 

あなたの特別の重みを追加します。

更新WRTのコメント:

に私が言ったように:生の頻度を計算した後の重みを追加します。

... as above ... 
Dim nSum 
' Std - all weights = 1 
nSum = 0 : For Each i In aCounts : nSum = nSum + i : Next 
WScript.Echo "all pigs are equal:", nSum 
' No EOLs 
nSum = 0 : For Each i In aCounts : nSum = nSum + i : Next : nSum = nSum - aCounts(4) 
WScript.Echo "EOLs don't count:", nSum 
nSum = 0 : aCounts(0) = aCounts(0) * 4 : For Each i In aCounts : nSum = nSum + i : Next 
WScript.Echo "vowels count * 4:", nSum 

追加出力:

all pigs are equal: 25 
EOLs don't count: 23 
vowels count * 4: 37 
+0

私はそれはかなり混乱してすみません私に。だから、私は1/4の容量に含める文字を設定するか、それを完全に数えないようにします。 – kaswardy

+0

@kaswardy - アップデートをご覧ください。 –

+0

と私は文字としてキャリッジリターンを定義しますか? – kaswardy

関連する問題