Magyar szótövezés LibreOffice makróprogramozással

Az FSF.hu Alapítványon keresztül keresett meg Simonyi Béla egy érdekes feladattal: hogyan lehet szótöveket előállítani egy magyar szólistából? A Linux terjesztések részeként is elérhető Hunspell programmal egyszerűen:

echo "szótöveket előállítani szólistából" | hunspell -d hu_HU -s
szótöveket szótő

előállítani előállít

szólistából szólista

De mi van, ha éppen nem áll rendelkezésre Linux? Használhatjuk a Windows alá elérhető Cygwin keretrendszer, vagy a macOS parancssorát, ahol ingyenesen is elérhető szabad szoftverekkel fordíthatjuk le a Hunspell programot.

A következő LibreOffice makróval még erre sincsen szükség, elég egy magyar LibreOffice, és annak beépített, tövezésre is alkalmassá tett magyar szótára:

Sub StemmingWordPerLines
Dim language As New com.sun.star.lang.Locale
language.Language = "hu"
language.Country = "HU"
spellchecking = createUnoService("com.sun.star.linguistic2.SpellChecker")
Doc = ThisComponent
Pars = ThisComponent.Text.createEnumeration 
While Pars.hasMoreElements
  TextElement = Pars.nextElement
  If TextElement.supportsService("com.sun.star.text.Paragraph") Then
    Word = TextElement.String
    If spellchecking.isValid(Word, language, Array()) Then 
      result = spellchecking.spell("<?xml?><query type='stem'><word>" + Word + "</word></query>", language, Array())
      If not IsNull(result) and result.getAlternativesCount > 0 Then
        alternatives = result.getAlternatives
        stems = Word
        For i = 0 To result.getAlternativesCount - 1
          stems = stems + " " + alternatives(i)
        Next
        TextElement.String = stems
      End If
    End If
  End If
WEnd 
End Sub

Töltsük be a Writer dokumentumszerkesztő ablakába a soronként egy szót tartalmazó szólistánkat, és indítsuk el a makrót akár a makrószerkesztőben a makróra állítva a kurzort az F5 billentyű lenyomásával, akár a Writer Eszközök…→Makrók→Makrók futtatása… menüpontján keresztül. Az eredmény ugyanaz lesz: minden szó mellett megjelenik a szó (egy vagy több) töve, ahogy a mellékelt videó végén látható:

A fenti makrót tartalmazó, a videóban szereplő módon a LibreOffice-ba importálható makróállomány itt tölthető le.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.