Hi guys, Thanks for your feedback. The idea sounds great! Sergey, could you copy body of your last reply to the ticket?
I have questions regarding notation, should we support only prefix notation for now? I believe some functions might be written in infix and (probably) postfix notations in natural language. Thanks, Gleb. Sent with ProtonMail Secure Email. ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ On Monday, May 18, 2020 1:17 PM, Nikita Ivanov <[email protected]> wrote: > Just a quick note: > " temperature average" is a proper English and synonymous to "average > temperature" and the "average of temperature". In other words, the word > 'average' can be a noun, adjective or verb based on the context: > https://www.merriam-webster.com/dictionary/average > > Thanks, > > ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Nikita Ivanov > > On Mon, May 18, 2020 at 12:55 PM Sergey Kamov [email protected] wrote: > > > Hi Gleb > > What do you think about developing new probe side function enricher - > > 'nlpcraft:function'? > > Base idea of function enricher is search of maximum count of various > > functions, with references to another elements. > > For example: > > Some model has user element 'x:temp' with synonym 'temperature' > > So, for sentence 'show me average temperature', token 'average' should > > be detected as element 'nlpcraft:function' with type 'avg' and relation > > to 'x:temp' element. > > > > 1. In general functions can be > > > > - without argument > > - with one argument > > - with many arguments > > (We can start from first two variants - as first step.) > > > > > > 2. Functions with arguments should have references to some another elements > > It can be user element or some predefined elements like 'nlp:geo' etc. > > Look at supported elements in the documentation. > > (I suggest to define table, which describes, which functions can be > > related with which elements) > > > > 3. How to detect > > Example: > > > > > > - average temperature - ok (element 'x:temp' is after word 'average') > > - temperature average - skipped(such functions cannot be after their > > references) > > > > - average - skipped (it doesn't have sense without any references) > > - average <some free words> temperature - skipped (references should > > be after word without such gaps) > > > > - average the temperature - ok (gaps which contain only stopwords are > > possible) > > > > > > 4. This enricher should create token with > > > > - name 'nlpcraft:function', > > - mandatory String property 'type' (function name), > > - optional java.util.List<Integer> property 'indexes', which > > - omitted for function without arguments > > - has one length list of indexes for function with one argument > > ("indexes" field name is hardcoded for internal enrichers and used > > in > > some related components) > > Maybe some additional optional parameters can be passed. > > > > > > 5. Supported functions kinds can be > > > > - main math > > - sql > > - etc > > (We can start from math and sql functions, and extend supported kinds > > on next steps) > > > > > > 6. Look at Limit, Relation and Sort enrichers as examples, > > > > - they have such references to another elements via 'indexes' fields. > > - also note please that this enricher also should be called in loop > > (like mentioned above) because can have references to nested elements. > > > > - look also please, how stop-words processed in these enrichers. > > (if functions with multiple word-names exist, stopwords are suitable > > inside these names, like 'X the Y' is ok as 'X Y' , where 'X Y' is > > multiple words valid function name) > > > > > > 7. Functions names and all their synonyms (I guess mostly it can be > > shortcuts) can be hardcoded. > > Look at > > > > org.apache.nlpcraft.server.nlp.enrichers.coordinate.NCCoordinatesEnricher > > as example for numeric measures. > > > > > > What do you think? > > I suppose it can be good start for development. > > > > - there are a lot of examples > > - such task can help to dip in the project structure. > > > > Please ask questions. > > As result I think, we can create ticker with detailed described task. > > What is your opinion on this task? > > Sergey Kamov > > 18.05.2020 22:37, Nikita Ivanov пишет: > > > > > Gleb Privet, > > > Per our off-line discussion, I think functional enricher would be really > > > great problem to tackle. I think Sergey K. will provide more details as > > > he > > > developed previous versions. > > > > > > Thank you and thank you for your contribution to the project so far! > > > > > > --------------------------------------------------------------------- > > > > > > Nikita Ivanov > > > On Sun, May 17, 2020 at 12:35 PM Ifropc [email protected] > > > wrote: > > > > > > > Hello everybody! > > > > First of all, thank you for your feedback on my pull request! > > > > During working on my first issue, I was getting to know some high-level > > > > abstractions of Scala implementation. But I would like to dig a little > > > > bit > > > > > > > deeper and get more in-depth knowledge of NLPCraft. > > > > Could you recommend some Jira issue which is good for starters? > > > > Thanks, > > > > Gleb.
