From f8298e06c221a46f07c70a291ee7ad18dbb56cf8 Mon Sep 17 00:00:00 2001
From: Tomasz Bartosiak <tomasz.bartosiak@mozart.ipipan.waw.pl>
Date: Wed, 27 Apr 2016 13:38:07 +0200
Subject: [PATCH] adding missing file

---
 semantics/phraseology_generator.py | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+), 0 deletions(-)
 create mode 100644 semantics/phraseology_generator.py

diff --git a/semantics/phraseology_generator.py b/semantics/phraseology_generator.py
new file mode 100644
index 0000000..5606726
--- /dev/null
+++ b/semantics/phraseology_generator.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+
+from dictionary.models import sort_arguments, sort_positions, sortatributes
+from settings import MORFEUSZ2
+
+def lexicalisation(argument):
+    b = argument.type
+    if b == 'fixed':
+        return get_words(sortatributes(argument)[-1])
+    attributes = sortatributes(argument)
+    lexicalisation_type = attributes[0].values.all()[0].argument.type
+    lexicalisation_parameters = sortatributes(attributes[0].values.all()[0].argument)
+    if lexicalisation_type == 'xp': # xp(...)[np/prepnp], ...
+       lexicalisation_type = lexicalisation_parameters[0].values.all()[0].argument.type
+       lexicalisation_parameters = sortatributes(lexicalisation_parameters[0].values.all()[0].argument)
+    if lexicalisation_type == 'np': # np(case), number, nouns, atr
+        nps = get_nps(get_case(lexicalisation_parameters[0]), get_number(attributes[1]), get_words(attributes[2]), attributes[3])
+        return nps
+    elif lexicalisation_type == 'prepnp': #prepnp(prep, case), number, nouns, atr
+        prepnps = get_prepnps(get_preposition(lexicalisation_parameters[0]), get_case(lexicalisation_parameters[1]), get_number(attributes[1]), get_words(attributes[2]), attributes[3])
+        return prepnps
+    else:
+        return []
+    return []
+
+def get_preposition(attribute):
+    return attribute.values.all()[0].parameter.type.name
+
+def get_words(attribute):
+    words = [word.text[1:-1] for word in attribute.values.all()]
+    return words
+
+def get_case(attribute):
+    case = attribute.values.all()[0].parameter.type.name
+    if case == u'str':
+        case = u'acc'
+    return case
+
+def get_number(attribute):
+    number = attribute.values.all()[0].parameter.type.name
+    return number
+
+def get_nps(case, number, nouns, _atr):
+    result = []
+    for noun in nouns:
+        options = [(interp.orth, interp.getTag(MORFEUSZ2)) for interp in MORFEUSZ2.generate(noun.encode('utf8'))]
+        if case != u'_':
+            filtered = []
+            for option in options:
+                (orth, tag) = option
+                if case in tag:
+                    filtered.append(option)
+            options = filtered
+        if number != u'_':
+            filtered = []
+            for option in options:
+                (orth, tag) = option
+                if number in tag:
+                    filtered.append(option)
+            options = filtered
+    return [orth for orth, _ in options]
+
+def get_prepnps(prep, case, number, nouns, _atr):
+    # ala["ma"] = kot
+    nps = get_nps(case, number, nouns, _atr)
+    return [prep + ' ' + np for np in nps]
+
--
libgit2 0.22.2