From 862d0462e56f1472b0bc9119286618b2127427d4 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sat, 16 May 2020 15:16:01 +0200 Subject: 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. --- lulua/report.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'lulua/report.py') 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: -- cgit v1.2.3