Всем привет! Подскажите, пожалуйста, существует ли в Excel текстовая формула или, возможно, имеется какая-то надстройка, которая позволяет определить часть речи (глагол, существительное, причастие и тд). Нашла, как реализовать это на Питон https://habr.com/ru/post/152389/ но, к сожалению, не владею.
Всем привет! Подскажите, пожалуйста, существует ли в Excel текстовая формула или, возможно, имеется какая-то надстройка, которая позволяет определить часть речи (глагол, существительное, причастие и тд). Нашла, как реализовать это на Питон https://habr.com/ru/post/152389/ но, к сожалению, не владею.Myata
Сообщение отредактировал Myata - Суббота, 16.05.2020, 22:11
Можно прикрутить для этого встроенные средства Word, на основе PartOfSpeechList (https://docs.microsoft.com/en-us/previous-versions/office/developer/office-xp/aa209839(v=office.10)?redirectedfrom=MSDN) но 1. Функция становится не быстрая, так как по идее надо открывать и закрывать Word приложение. 2. нужно или определить массу констант или как минимум соответствие делать, ну или подключать Word в Reference 3. не понятно что на выходе, особенно если есть несколько значений из разных частей речи например Есть (от слова жрать) и от слова (Есть что жрать) 4. Определить язык можно тот что по умолчанию что в системе, но лучше передавать как опциональный параметр,
[vba]
Код
Function GetPartsOfSpeech(strWord As String, Optional LanguageId As Integer) As Integer 'https://docs.microsoft.com/en-us/previous-versions/office/developer/office-xp/aa209839(v=office.10)?redirectedfrom=MSDN
Dim myPos As Variant If LanguageId = 0 Then LanguageId = Application.LanguageSettings.LanguageId(msoLanguageIDExeMode) End If Set ObjWord = CreateObject("Word.Application") Set SynInfo = ObjWord.SynonymInfo(Word:=strWord, LanguageId:=LanguageId) If SynInfo.MeaningCount <> 0 Then For Each myPos In SynInfo.PartOfSpeechList GetPartsOfSpeech = myPos Exit For Next Else GetPartsOfSpeech = -1 End If ObjWord.Quit Set ObjWord = Nothing End Function
[/vba]
Можно прикрутить для этого встроенные средства Word, на основе PartOfSpeechList (https://docs.microsoft.com/en-us/previous-versions/office/developer/office-xp/aa209839(v=office.10)?redirectedfrom=MSDN) но 1. Функция становится не быстрая, так как по идее надо открывать и закрывать Word приложение. 2. нужно или определить массу констант или как минимум соответствие делать, ну или подключать Word в Reference 3. не понятно что на выходе, особенно если есть несколько значений из разных частей речи например Есть (от слова жрать) и от слова (Есть что жрать) 4. Определить язык можно тот что по умолчанию что в системе, но лучше передавать как опциональный параметр,
[vba]
Код
Function GetPartsOfSpeech(strWord As String, Optional LanguageId As Integer) As Integer 'https://docs.microsoft.com/en-us/previous-versions/office/developer/office-xp/aa209839(v=office.10)?redirectedfrom=MSDN
Dim myPos As Variant If LanguageId = 0 Then LanguageId = Application.LanguageSettings.LanguageId(msoLanguageIDExeMode) End If Set ObjWord = CreateObject("Word.Application") Set SynInfo = ObjWord.SynonymInfo(Word:=strWord, LanguageId:=LanguageId) If SynInfo.MeaningCount <> 0 Then For Each myPos In SynInfo.PartOfSpeechList GetPartsOfSpeech = myPos Exit For Next Else GetPartsOfSpeech = -1 End If ObjWord.Quit Set ObjWord = Nothing End Function