diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2020-05-16 15:16:01 +0200 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2020-05-16 15:19:53 +0200 |
commit | 862d0462e56f1472b0bc9119286618b2127427d4 (patch) | |
tree | 1c23251f0e666dbae28ae4c3b42888533e8b7337 /lulua/report.py | |
parent | 244197b5f8b1f4d73d4ab9ac838334860b55662c (diff) | |
download | lulua-862d0462e56f1472b0bc9119286618b2127427d4.tar.gz lulua-862d0462e56f1472b0bc9119286618b2127427d4.tar.bz2 lulua-862d0462e56f1472b0bc9119286618b2127427d4.zip |
report: Add simple sentence effort visualization
Trying to give the reader a sense for how difficult carpalx thinks
certain parts of a sentence are. Conclusions are only valid for a single
layout and comparison between them is not possible.
Diffstat (limited to 'lulua/report.py')
-rw-r--r-- | lulua/report.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/lulua/report.py b/lulua/report.py index 06bb724..8a50681 100644 --- a/lulua/report.py +++ b/lulua/report.py @@ -18,7 +18,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -import sys, argparse, logging, pickle +import sys, argparse, logging, pickle, math from gettext import GNUTranslations, NullTranslations from decimal import Decimal @@ -54,6 +54,21 @@ def arabnum (s): m = {'0': '٠', '1': '١', '2': '٢', '3': '٣', '4': '٤', '5': '٥', '6': '٦', '7': '٧', '8': '٨', '9': '٩', ',': '٬', '.': '٫'} return ''.join (map (lambda x: m.get (x, x), s)) +def clamp (v, lower, upper): + return max (min (v, upper), lower) + +def blend (v, a, b): + v = clamp (v, 0, 1) + return (b-a)*v+a + +def blendn (v, *l): + assert 0 <= v <= 1 + n = len (l) + step = 1/(n-1) + i = min (int (math.floor (v/step)), n-2) + stretchedv = (v-i*step)/step + return [blend (stretchedv, x, y) for x, y in zip (l[i], l[i+1])] + def render (): parser = argparse.ArgumentParser(description='Create lulua report.') parser.add_argument('-c', '--corpus', nargs='+', metavar='FILE', help='Corpus metadata files') @@ -67,6 +82,7 @@ def render (): env.filters['approx'] = approx env.filters['numspace'] = numspace env.filters['arabnum'] = arabnum + env.filters['blendn'] = blendn corpus = [] for x in args.corpus: |