私は、Accessデータベース内でVisual Basicの関数を使用してストップワードを削除する方法を探しています。Visual Basicを使用して文字列からストップワードを削除する方法?
今日は私はいくつか置き換えているだけですが、単語としてまたは単語内でストップワードを削除するかどうかわからないので、正しい方法ではないことが分かります。
どのような助けが素晴らしいだろう、私はVBでこれを行うための方法を見つけることができません。
私は、Accessデータベース内でVisual Basicの関数を使用してストップワードを削除する方法を探しています。Visual Basicを使用して文字列からストップワードを削除する方法?
今日は私はいくつか置き換えているだけですが、単語としてまたは単語内でストップワードを削除するかどうかわからないので、正しい方法ではないことが分かります。
どのような助けが素晴らしいだろう、私はVBでこれを行うための方法を見つけることができません。
これはなんでしょうか?
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
これは、フレーズ内の単語が常に空白で区切られている限り機能します。
空白以外の区切り記号がある場合は、さらに処理する必要があります。
たとえば、関数内の空白をハードコーディングする代わりに、区切り記号のリストをループし、それぞれの関数を実行することができます。
私は今これをコードとして表示しませんが、あなたはそのアイデアを得ます。
あなたは真剣に私の質問を理解しています。私は多くのストップワードを持っているので、この関数を配列に渡すためにwhileループを実行します! – user1238765
@ user1238765:喜んでお手伝いします。私の答えがあなたにとって有益だったら、あなたが受け入れるならそれはいいだろう(http://stackoverflow.com/faq#howtoask)それ! –
VBAを意味しますか?つまり、MS Accessで使用されていますか? "* in *"のようにスペースを入れるのはどうですか?それは開始と終了のwprdsが不足しますが、十分かもしれません。 – Fionnuala