Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2013 - Анализ текста

Ответить
Настройки темы
2013 - Анализ текста

Старожил


Сообщения: 241
Благодарности: 1

Профиль | Отправить PM | Цитировать


Всем привет.
Можете подсказать, можно в Word производить такой анализ текста: разбить текст на слова, посчитать количество повторяющихся слов в тексте, найти пары слов наиболее связанных друг с другом и посчитать их количество?

Отправлено: 23:28, 07-10-2015

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Invincible:
А нельзя добавить, чтобы учитывались падежи слов? »
Я не припоминаю такого функционала в комплекте Microsoft Office.

Цитата Invincible:
И еще союзы, предлоги, частицы удалить из текста, такие как "и", "а". »
И такого тоже.

Если «союзы, предлоги, частицы удалить из текста» ещё возможно теоретически (если Вы перечислите все возможные варианты «союзы, предлоги, частицы»), то конкурировать с десятками и сотнями тысяч человеко-лет крупных контор в лексическом анализе нереально.

Отправлено: 20:45, 10-10-2015 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата Invincible:
И еще союзы, предлоги, частицы удалить из текста, такие как "и", "а". »
Возможно подразумевалось не учитывать в подсчётах? Тогда исключить длину слова равную 1 символу в скрипте Iska. Однако это не выход и не решит задачи в целом. А насчёт падежей это по моему не получится, нужна как минимум база-словарь слов, да и то не факт что получится правильно распознать.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 01:07, 11-10-2015 | #12


Старожил


Сообщения: 241
Благодарности: 1

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
Option Explicit

Sub Sample()
    Dim objWord As Range
    
    Dim strWord As String
    Dim objDictionary As Object
    Dim elem As Variant
    
    Dim strWord1 As String
    Dim strWord2 As String
    Dim i As Integer
    
    
    Set objDictionary = CreateObject("Scripting.Dictionary")
    
    For Each objWord In ThisDocument.Words
        strWord = RemoveNonAlpha(objWord.Text)
        
        If Not Len(strWord) = 0 Then
            If Not objDictionary.Exists(strWord) Then
                objDictionary.Add strWord, 1
            Else
                objDictionary.Item(strWord) = objDictionary.Item(strWord) + 1
            End If
        End If
    Next
    
    For Each elem In objDictionary.Keys
        Debug.Print "[" & elem & "]", objDictionary.Item(elem)
    Next
    
    objDictionary.RemoveAll
    
    
    Debug.Print "===================================================================="
    
    
    For i = 1 To ThisDocument.Words.Count - 1
        strWord1 = LCase(RemoveNonAlpha(ThisDocument.Words.Item(i).Text))
        strWord2 = LCase(RemoveNonAlpha(ThisDocument.Words.Item(i + 1).Text))
        
        If Len(strWord1) > 0 And Len(strWord2) > 0 Then
            If StrComp(strWord1, strWord2, vbTextCompare) = 1 Then
                strWord = strWord2 & " " & strWord1
            Else
                strWord = strWord1 & " " & strWord2
            End If
            
            If Not objDictionary.Exists(strWord) Then
                objDictionary.Add strWord, 1
            Else
                objDictionary.Item(strWord) = objDictionary.Item(strWord) + 1
            End If
        End If
    Next
    
    For Each elem In objDictionary.Keys
        Debug.Print "[" & elem & "]", objDictionary.Item(elem)
    Next
    
    objDictionary.RemoveAll
    Set objDictionary = Nothing
End Sub

Function RemoveNonAlpha(strValue As String) As String
    With CreateObject("VBScript.RegExp")
        .IgnoreCase = True
        .Global = True
        .Multiline = True
        .Pattern = "([^a-zа-яё])*"
        
        RemoveNonAlpha = .Replace(strValue, "")
    End With
End Function
А что нужно изменить в этом макросе, чтобы учитывались три слова, стоящие рядом?

Отправлено: 00:56, 16-10-2015 | #13



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2013 - Анализ текста

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
F-Анализ 1.0 OSZone Software Новости программного обеспечения 0 02-09-2015 16:30
CMD/BAT - [решено] Анализ лог файла с изменением текста. Kainos Скриптовые языки администрирования Windows 2 18-04-2015 01:49
Договора и анализ 1.0 OSZone Software Новости программного обеспечения 0 27-03-2010 09:30
MSFT SQL Server - анализ dm_os_wait_stats eboue Программирование и базы данных 0 03-04-2009 20:05
[решено] Какая разница между "Сигнатурный анализ" и "Эвристический анализ"? verdix Хочу все знать 3 10-11-2008 23:50




 
Переход