2017年4月26日水曜日

ナイーブベイズ分類対象コーパスについて

これまで、ナイーブベイズ分類対象のコーパスは固定して分類を複数回(10回)行ってきたが、結果に大きなバラツキは見られなかった。次にコーパス自体を変えて分類を行ってみてはどうだろう。
すなわち、最初は1~100件、次は101~200件、・・・と毎回異なるデータ(抄録)を抽出して分類を行ってみてはどうだろう。
その場合、範囲を指定してデータを抜き取るプログラムが必要となる。それを以下に示す。
Sub run()
    データ抽出 101, 100
End Sub

Sub データ抽出(オフセット As Integer, 件数 As Integer)
Dim ws As Worksheet

Dim 疾患名 As String
Dim i As Integer
Dim j As Integer

Dim PATH As String
Dim fno1 As Integer
Dim fno2 As Integer

    PATH = ActiveWorkbook.PATH
    
    fno1 = FreeFile
    Open PATH & "\コーパス\抄録" & 件数 & ".txt" For Output As #fno1
    
    fno2 = FreeFile
    Open PATH & "\コーパス\疾患" & 件数 & ".csv" For Output As #fno2
    
    Set ws = Worksheets("疾患")
    
    Print #fno2, "疾患"
    i = 2
    
    Do While ws.Cells(i, 1).Value <> ""
        j = 0
        疾患名 = ws.Cells(i, 1).Value
        Do While 疾患名 = ws.Cells(i, 1).Value
            j = j + 1
            If j >= オフセット And j < オフセット + 件数 Then
                Print #fno2, ws.Cells(i, 1).Value
                Print #fno1, ws.Cells(i, 23).Value
            End If
            i = i + 1
        Loop
    Loop
    
    Close #fno1
    Close #fno2
    
End Sub

プログラムの使い方は次の通り。
 データ抽出 オフセット(先頭のデータの位置), 抽出件数
なお、このプログラムを含むExcelファイルがあるフォルダ内に「コーパス」という名前のフォルダをあらかじめ作っておく。抄録、疾患の抽出結果はそのフォルダ内に「抄録XXX.txt」、「疾患XXX.csv」という名前で出力される。 ここで、XXXは抽出件数である。

0 件のコメント:

コメントを投稿