2012-02-28 8 views
2

私は、Accessデータベース内でVisual Basicの関数を使用してストップワードを削除する方法を探しています。Visual Basicを使用して文字列からストップワードを削除する方法?

今日は私はいくつか置き換えているだけですが、単語としてまたは単語内でストップワードを削除するかどうかわからないので、正しい方法ではないことが分かります。

どのような助けが素晴らしいだろう、私はVBでこれを行うための方法を見つけることができません。

+1

VBAを意味しますか?つまり、MS Accessで使用されていますか? "* in *"のようにスペースを入れるのはどうですか?それは開始と終了のwprdsが不足しますが、十分かもしれません。 – Fionnuala

答えて

2

これはなんでしょうか?

OutputString = Replace("They answered the question", "the", "") 

これは、「they」という単語の一部を含む、フレーズからのすべての「the」を置き換えます。

最も簡単な解決策を交換する単語の前後にスペースを入れて次のようになります。

OutputString = Replace("They answered the question", " the ", "") 

これは私の上記の例では、フレーズのために働く、という言葉が最初に発生したときに、それは動作しません。またはフレーズの最後に入力します。
これらの場合は、さらに処理する必要があります。

Public Function RemoveStopWords(_ 
           ByVal Phrase As String, _ 
           ByVal WordToRemove As String _ 
           ) As String 

    Dim RetVal As String 
    Dim Tmp As String 

    'remove the word in the middle of the phrase 
    RetVal = Replace(Phrase, " " & WordToRemove & " ", " ") 

    'remove the word at the beginning 
    Tmp = WordToRemove & " " 
    If Left(RetVal, Len(Tmp)) = Tmp Then 
     RetVal = Mid(RetVal, Len(Tmp) + 1) 
    End If 

    'remove the word at the end 
    Tmp = " " & WordToRemove 
    If Right(RetVal, Len(Tmp)) = Tmp Then 
     RetVal = Left(RetVal, Len(RetVal) - Len(Tmp)) 
    End If 

    RemoveStopWords = RetVal 

End Function 

これは、フレーズ内の単語が常に空白で区切られている限り機能します。
空白以外の区切り記号がある場合は、さらに処理する必要があります。

たとえば、関数内の空白をハードコーディングする代わりに、区切り記号のリストをループし、それぞれの関数を実行することができます。
私は今これをコードとして表示しませんが、あなたはそのアイデアを得ます。

+0

あなたは真剣に私の質問を理解しています。私は多くのストップワードを持っているので、この関数を配列に渡すためにwhileループを実行します! – user1238765

+3

@ user1238765:喜んでお手伝いします。私の答えがあなたにとって有益だったら、あなたが受け入れるならそれはいいだろう(http://stackoverflow.com/faq#howtoask)それ! –

関連する問題