< návrat zpět

MS Excel


Téma: Slabiky rss

Zaslal/a 22.4.2017 10:09

Existuje nějaké známé řešení pro počet slabik?

Něco jako Msgbox slabiky.count :D :D?

Zaslat odpověď >

#036146
avatar
Zkus zjišťovat počet samohlásek ve slovu.
Problém bude s 'ou' (např. 'doufat' vs. 'doučovat')
a se zjišťováním, kdy jsou 'l' a 'r' slabikotvorná (např. 'vrhl') a kdy nikoli.citovat
icon #036151
eLCHa
Tak jen tak z legrace (jako funkce listu) ;))
Testováno na pár slovech, určitě budou výjimky. Případně si někdo může hrát dál. Komentář dávat nebudu, kdo chce, ten to pochopí :p.
Aby bylo funkční, je zapotřebí do modulu vložit fci REMOVE_DIACRITICS

Function POCET_SLABIK(ByRef Slovo As Variant) As Byte
Application.Volatile

Const csVOCALS As String = "aeiouy"

Dim iRetVal As Byte
iRetVal = 0

Dim sWord As String
sWord = Slovo
Dim iPos As Byte
iPos = WorksheetFunction.Max(InStrRev(sWord, "l"), InStrRev(sWord, "r"))
Do Until iPos = 0
If Not iPos = 1 Then
If InStr(csVOCALS, Mid$(sWord & "x", iPos + 1, 1)) = 0 Then
sWord = Left$(sWord, iPos - 1) & "a" & Mid$(sWord, iPos + 1)
End If
iPos = WorksheetFunction.Max(InStrRev(sWord, "l", iPos - 1), InStrRev(sWord, "r", iPos - 1))
Else
iPos = 0
End If
Loop
sWord = REMOVE_DIACRITICS(sWord)
For iPos = 1 To Len(csVOCALS)
If Not InStr(sWord, Mid$(csVOCALS, iPos, 1)) = 0 Then
sWord = Replace$(sWord, Mid$(csVOCALS, iPos, 1), "a")
End If
Next iPos
sWord = Replace$(sWord, "aa", "a")

iRetVal = Len(sWord) - Len(Replace$(sWord, "a", vbNullString))

POCET_SLABIK = iRetVal
End Function
citovat
#036154
avatar
No asi bolo vhodné uviesť aj o aký jazyk ide. Vo francúzštine alebo angličtine budú výsledky asi problematické.citovat
icon #036156
eLCHa
@marjankaj
Francouzi a angličané tady nechodí.
Předpokládám určitou inteligenci. Schválně, zkuste si tipnout, pro který jazyk jsem to dělal? ;)))

Mimochodem, jednou z výjimek, kdy to nebude fungovat, je právě slovo výše zmiňované slovo doučovat...citovat
icon #036157
eLCHa
Mno a jak už to tak bývá - když se na to člověk koukne druhý den, tak vidí věci, které den před tím unikly.
Prostě to berte jen jako nástřel. Na toto stejně krátká procedura stačit nebude. A tipl bych že bez slovníku to taky nepůjde. Kdyby to totiž bylo jednoduché, tak zadáte na internet "počet slabik" a vyjede vám algoritmus, popřípadě i funkce v nějakém programovacím jazyce.citovat
#036158
elninoslov
Ja som si teda pozrel pravidlá slabikovania, a teda jednoduché to rozhodne nebude. Príliš veľa podmienok a pravidiel, a často pre nás "dávno zo školy" nič nehovoriace termíny 7 ...citovat
#036159
avatar
@eLCHa
No aj češi môžu pracovať s anglickými textami. Netuším na aký účel to zadávateľ chce použiť v exceli.

Ja som vymyslel niečo takéto na eliminovanie dvoch samohlások za sebou.
Function slab(tex As String) As Long
slab = 0
tex = Replace(tex, "a", "#")
tex = Replace(tex, "e", "#")
tex = Replace(tex, "i", "#")
tex = Replace(tex, "o", "#")
tex = Replace(tex, "u", "#")
tex = Replace(tex, "y", "#")
' doplniť o diakritiku
tex = Replace(tex, "##", "#")
For i = 2 To Len(tex)
If Mid(tex, i, 1) = "#" Then slab = slab + 1
Next i
End Function
citovat
#036160
avatar
slabiky s "r" alebo "l" neriešim.
napríklad "vrhl" je jedna slabika
"trhat" sa asi tiež nedá rozdeliť na tr-hat
Aj so samohláskou na začiatku je to nejednoznačné
"aspoň" sa asi dá rozdeliť as-poň
ale "auto" na au-to je dosť podivné
a "alebo" nejde na a-le-bo
Toto je skôr úloha pre jazykovedcov.citovat
icon #036161
eLCHa
@marjankaj
vrhl jsou 2 slabiky ;) vr-hl
zjednodušeně by mělo platit to, že pokud je před i za r/l souhláska, jsou slabikotvorné (vyjma citoslovcí). To by se ještě pořešit dalo.
Problematické je jednoslabičné u
např: do-u-čo-vat vs dou-šek.
To jednoduše nelze (nahrazení ou nelze použít v prvním případě)

Takže, orientačně by počet slabik dával kód, který jsem vložil - musel bych ale mírně doupravit... Takto jednoduchý kód ale nikdy nebude 100% a kdo ví jestli nějaký ano. Vlastně ano, 100% by byl slovník (slovo - počet slabik) ;))citovat
#036163
avatar
No zrejme som to pochopil trochu inak.
slabiky versus rozdeľovanie slov.
A aj pri sadzbe(DTP) sú iné pravidlá.
U nás je to asi takto.
http://www.slovencina.vselico.com/rozdelovanie.html

Kedysi som nechápal, prečo je a USA také dôležité vyhláskovať slová.
No zmysel slabikovania u nás doteraz celkom nechápem. Ešteže to nie je v maturitných otázkach. 2citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje