packages feed

phladiprelio-ukrainian-simple 0.3.0.1 → 0.3.1.0

raw patch · 4 files changed

+13/−6 lines, 4 files

Files

CHANGELOG.md view
@@ -36,3 +36,8 @@  * Third version revised A. Some minor code improvements. +## 0.3.1.0 -- 2023-03-27++* Third version revised B. Added the "-t 2" command line options with weaker and permissive+test for irregularities that influences prosody.+
README.md view
@@ -1,6 +1,6 @@ The executable is the new implementation of the ideas related to PhLADiPreLiO (Phonetic Languages Approach to Discovering the Preferred Line Options) for Ukrainian language. It uses hashes and-has at the moment (as of the version 0.3.0.1) not the full functionality. The previous implementation +has at the moment (as of the version 0.3.1.0) not the full functionality. The previous implementation  and its documentation are at the links:  https://hackage.haskell.org/package/phonetic-languages-simplified-examples-array
app/Main.hs view
@@ -34,10 +34,11 @@        f syllableDurationsDs grps mxms = sum . countHashesG hc grps mxms . mconcat .                  (if null file then case k of { 1 -> syllableDurationsD; 2 -> syllableDurationsD2; 3 -> syllableDurationsD3; 4 -> syllableDurationsD4}                           else  if length syllableDurationsDs >= k then syllableDurationsDs !! (k - 1) else syllableDurationsD2) . createSyllablesUkrS-   if numTest == 0 then do+   if numTest `elem` [0,2] then do      putStrLn "Feet   Val  Stat   Proxim" -     mapM (\(q,qs) -> let m = stat1 syllN (q,qs) in let max1 = maximumBy (comparing (f syllableDurationsDs q qs)) universalSet in let mx = f syllableDurationsDs q qs max1 in putStrLn (show (fromEnum q) `mappend` "   |   " `mappend`  show mx `mappend` "     " `mappend` show m `mappend` "  -> " `mappend` show (100 * fromIntegral mx / fromIntegral m) `mappend` "%")) $ [(2,[1]),(3,[2,1]),(4,[3,2]),(5,[4,3,2]),(6,[5,4,3]),(7,[6,5,4,3,2])]-   else mapM (\(x,y) -> putStrLn (show x `mappend` (' ':y)))  . (let h1 = if descending then (\(u,w) -> ((-1) * u, w)) else id in sortOn h1) . map (\xss -> (f syllableDurationsDs grps mxms xss, xss)) $ universalSet+     mapM (\(q,qs) -> let m = stat1 syllN (q,qs) in let max1 = maximumBy (comparing (f syllableDurationsDs q qs)) universalSet in let mx = f syllableDurationsDs q qs max1 in putStrLn (show (fromEnum q) `mappend` "   |   " `mappend`  show mx `mappend` "     " `mappend` show m `mappend` "  -> " `mappend` show (100 * fromIntegral mx / fromIntegral m) `mappend` "%")) .+      zip [2..7] $ ([1]:(if numTest == 0 then [[2,1],[3,2],[4,3,2],[5,4,3],[6,5,4,3,2]] else [[2],[3],[4,3],[5,4],[6,5,4]]))+    else  mapM (\(x,y) -> putStrLn (show x `mappend` (' ':y)))  . (let h1 = if descending then (\(u,w) -> ((-1) * u, w)) else id in sortOn h1) . map (\xss -> (f syllableDurationsDs grps mxms xss, xss)) $ universalSet  countSyll :: String -> Int countSyll xs = fromEnum . foldr (\x y -> if isVowel1 x then y + 1 else y) 0 . convertToProperUkrainianI8 $ xs@@ -59,13 +60,14 @@       str1 = unwords . take 7 . words . mconcat . prepareText . unwords $ arg2s   if helpMessage then do       putStrLn "Synopsis:"-      putStrLn "phladiprelioUkr [+c <HashCorrections encoded>] [+n] [+d <FilePath to file with durations>] [+r <groupping info>] [+s <syllable durations function number>] <Ukrainian textual line>"+      putStrLn "phladiprelioUkr [+c <HashCorrections encoded>] [+n] [+d <FilePath to file with durations>] [+r <groupping info>] [-t <number of the test or its absense if 1 is here>] [+s <syllable durations function number>] <Ukrainian textual line>"       putStrLn ""       putStrLn "+n — if specified then the order of sorting and printing is descending (the reverse one to the default otherwise). "       putStrLn "+s — the next is the digit from 1 to 4 included. The default one is 2. Influences the result in the case of +d parameter is not given. "       putStrLn "+d — see: https://web.archive.org/web/20220610171812/https://raw.githubusercontent.com/OleksandrZhabenko/phonetic-languages-data/main/0.20.0.0/56.csv as a format for the file."       putStrLn "+r — afterwards are several unique digits not greater than 8 in the descending order — the first one is the length of the group of syllables to be considered as a period, the rest — positions of the maximums and minimums. Example: \"543\" means that the line is splitted into groups of 5 syllables starting from the beginning, then the positions of the most maximum (4 = 5 - 1) and the next (smaller) maximum (3 = 4 - 1). If there are no duplicated values then the lowest possible value here is 0, that corresponds to the lowest minimum. If there are duplicates then the lowest value here is the number of the groups of duplicates, e. g. in the sequence 1,6,3,3,4,4,5 that is one group there are two groups of duplicates — with 3 and 4 — and, therefore, the corresponding data after +r should be 7...2. The values less than the lowest minimum are neglected."       putStrLn "+c — see explanation at the link: https://hackage.haskell.org/package/rhythmic-sequences-0.2.3.1/docs/src/Rhythmicity.MarkerSeqs.html#HashCorrections"+      putStrLn "-t — and afterwards the digit showing the test for \'smoothness\' (to be more accurate - absense or presense of some irregularities that influences the prosody) to be run - if 0 - more extended and strict, if 2 - less strict, more permissive, otherwise - no tests at all (if no digit is here then it is likely that the first word can be used instead and it will be removed from the input)."   else generalF fileDu numTest hc grpp sylD descending str1 >> return ()  bSpecs :: CLSpecifications
phladiprelio-ukrainian-simple.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.4 name:               phladiprelio-ukrainian-simple-version:            0.3.0.1+version:            0.3.1.0  -- A short (one-line) description of the package. synopsis:           A PhLADiPreLiO implementation for Ukrainian that uses hashes