Как удалить стоп-слова из строки с помощью Visual Basic? - PullRequest
2 голосов
/ 29 февраля 2012

Я ищу способ удалить стоп-слова с помощью функции в Visual Basic внутри моей БД Access.

Сегодня я просто делаю несколько замен, но я знаю, что это неправильный способ, так как яне знал бы, удаляю ли я стоп-слово как слово или внутри слова.

Любая помощь будет отличной, я просто не могу найти способ сделать это на VB.

1 Ответ

2 голосов
/ 29 февраля 2012

Хорошо, вы имеете в виду что-то вроде этого, верно?

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

Это заменяет все вхождения слова "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

Это работает до тех пор, пока слова в фразе всегда разделяются пробелами.
Когда могут быть другие разделители, кроме пробелов, вы должны сделать еще больше.

Например, вместо жесткого кодирования пробелов в функции, вы можете перебрать список разделителей и выполнить функцию для каждого из них.
Я не буду показывать это как код сейчас, но вы поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...