メモ

主にプログラミング系の備忘録

テキストマイニング的なことを始めています。
で、形態素分析にかける前に文単位で分割しといた方が
便利そうなので、作ってみた。

Public Function 文分割(str As String) As String()

    
  Dim nStart As Long
  Dim Flg As Boolean
  Dim i As Long
  Dim j As Long
  Dim ret() As String
  Dim buf As String
    nStart = 1
    Flg = False
    j = 0
    ReDim ret(255)
    For i = 1 To Len(str)
      buf = Mid$(str, i, 1)
      '通常の文字チェックのとき
      If Flg = False Then
        If buf = "。" Or buf = "!" Or buf = "?" Or buf = "?" Or buf = "?" Or buf = vbLf Or buf = vbCr Then
        '文末記号にHitしたらモードを変更
          Flg = True
        '記号にたどりつかないままEOSにたどりついたら出力
        ElseIf i = Len(str) Then
          j = j + 1
          ret(j) = Replace(Replace(Right$(str, Len(str) - nStart + 1), vbCr, ""), vbLf, "")
        End If
      
      Else
      '文末記号の連続入力チェック
        If buf <> "。" And buf <> "!" And buf <> "?" And buf <> "?" And buf <> "?" And buf <> vbLf And buf <> vbCr Then
          Flg = False
          j = j + 1
        ret(j) = Replace(Replace(Mid$(str, nStart, i - nStart), vbCr, ""), vbLf, "")
          nStart = i
        End If
      End If
    Next

    ReDim Preserve ret(j)
    文分割 = ret

End Function