All Projects → IEMLdev → Ieml

IEMLdev / Ieml

Licence: gpl-3.0
IEML semantic language - a meaning-representation system based on semantic primitives and a regular grammar. Basic semantic relationships between concepts are automatically computed from syntactic similarities.

Programming Languages

python
139335 projects - #7 most used programming language
language
365 projects

Projects that are alternatives of or similar to Ieml

linguistic-datasets-portuguese
Linguistic Datasets for Portuguese: Lista de conjuntos de dados linguísticos para língua portuguesa com licença flexíveis: banco de dados, lista de palavras, sinônimos, antônimos, dicionário temático, tesauro, linked data, semântica, ontologia e representação de conhecimento
Stars: ✭ 46 (+12.2%)
Mutual labels:  dictionary, natural-language
Text Analytics With Python
Learn how to process, classify, cluster, summarize, understand syntax, semantics and sentiment of text data with the power of Python! This repository contains code and datasets used in my book, "Text Analytics with Python" published by Apress/Springer.
Stars: ✭ 1,132 (+2660.98%)
Mutual labels:  natural-language, semantic
Mlsql
inferring sql queries from plain-text questions about tables
Stars: ✭ 841 (+1951.22%)
Mutual labels:  natural-language
Css Naked Day.github.io
Show off your sexy `<body>`!
Stars: ✭ 36 (-12.2%)
Mutual labels:  semantic
Spimedb
EXPLORE & EDIT REALITY
Stars: ✭ 14 (-65.85%)
Mutual labels:  semantic
Kakajson
Fast conversion between JSON and model in Swift.
Stars: ✭ 867 (+2014.63%)
Mutual labels:  dictionary
Google Ime Dictionary
日英変換・英語略語展開のための IME 追加辞書 📙 日本語から英語への和英変換や英語略語の展開を Google 日本語入力や ATOK などで可能にする IME 拡張辞書です
Stars: ✭ 30 (-26.83%)
Mutual labels:  dictionary
Android Interview Questions
Collection of Android and Java related questions and topics to know
Stars: ✭ 812 (+1880.49%)
Mutual labels:  topic
Slackword
Dictionary in your slack....additionally, you can get random words.
Stars: ✭ 39 (-4.88%)
Mutual labels:  dictionary
Scalameta
Library to read, analyze, transform and generate Scala programs
Stars: ✭ 879 (+2043.9%)
Mutual labels:  semantic
Wikisql
A large annotated semantic parsing corpus for developing natural language interfaces.
Stars: ✭ 965 (+2253.66%)
Mutual labels:  natural-language
Probable Wordlists
Version 2 is live! Wordlists sorted by probability originally created for password generation and testing - make sure your passwords aren't popular!
Stars: ✭ 7,312 (+17734.15%)
Mutual labels:  dictionary
Ciklinbekin
電子化平話字音表。 戚林八音校注、 Dictionary of the Foochow Dialect。 校對中, 尚未完善, 請謹慎取用。
Stars: ✭ 12 (-70.73%)
Mutual labels:  dictionary
Presentations
Holds and organizes all past, present, and future presentations at the meetup
Stars: ✭ 30 (-26.83%)
Mutual labels:  topic
Potchana
An open source worldwide languages dictionary plug-in for macOS. As features on major Thailand tech forums like MacThai.com
Stars: ✭ 10 (-75.61%)
Mutual labels:  dictionary
Zidian
28GB超大字典(dictionary )
Stars: ✭ 38 (-7.32%)
Mutual labels:  dictionary
Qolor
An atom package to color your queries!
Stars: ✭ 18 (-56.1%)
Mutual labels:  semantic
Kittiseg
A Kitti Road Segmentation model implemented in tensorflow.
Stars: ✭ 873 (+2029.27%)
Mutual labels:  semantic
Vuetify
🐉 Material Component Framework for Vue
Stars: ✭ 33,085 (+80595.12%)
Mutual labels:  semantic
Dictionary Builder
Real world example to demonstrate advanced techniques to unmarshall very large xml document with very low memory footprint.
Stars: ✭ 40 (-2.44%)
Mutual labels:  dictionary

IEML

Build Status

IEML is a regular philological language (built as a natural language), where the syntax is parallel to semantics. This means in IEML, a small change in the structure of an expression results in a semantically close expression. For instance:

  • [! E:S:. ()(u.A:.-) > E:.l.- (E:.-U:.s.-l.-')] : to go up
  • [! E:S:. ()(u.A:.-) > E:.l.- (E:.-U:.d.-l.-')] : to go down

Only E:.-U:.s.-l.-' (up) has been changed to E:.-U:.d.-l.-' (down).

These properties make the semantic relationships between the different expressions of the language automatically computable by an edit distance calculation. Therefore, there are no synonyms in the language, because by construction, the synonyms would be written identically. On the other hand, words that are written differently in IEML have different meanings.

So IEML has the perfect capabilities to uniquely identify concepts in a database, an ontology, a taxonomy, a categorization or any other documents, without having to rely on an external referential other than IEML's grammar and its dictionary of semantic primitives.

In order to guarantee the consistency of interpretations of IEML expressions, a database of translations (en and fr), comments and tags per USL is available here. This database has a normative purpose concerning the interpretation of IEML expressions. It can be browsed with the intlekt editor. It can also be used as an educational resource for learning IEML, in addition to reading the grammar.

IEML is a regular language that is intended to serve as an easily interpretable coordinate system for the world of ideas on the internet, to improve communication and artificial intelligence.

Install

The library works with python 3.5+ From github:

git clone https://github.com/IEMLdev/ieml
python setup.py

Quick start

Dictionary

The IEML dictionary is a set of around ~3500 basic semantics units.

The dictionay has its own syntax and primitives. The dictionary is organised in layers, from 0 (the most abstract) to 7 (the most specific). The words excepts the primitives are built from words of lower layers.

The last version of the IEML dictionary is automatically downloaded and installed when instanced:

from ieml.dictionary import Dictionary

dic = Dictionary()
dic.index

This return a list of all words defined in the dictionary. There is an order defined on the terms of the dictionary, and d.index is the position of the words in this order.

You can access the translations of a word :

t = dic.index[100]
t.translations.en

There are for the moment two languages supported: french (fr) and english (en)

The dictionaryis a graph of semantic relationships (paradigmatic) between the words. All the relations are computed automatically from the terms definitions.

t.relations.neighbours

This return a list of all the neighboors of term t and the type of relation they share.

You can also access the graph of relation as a numpy array of transitions :

m = dic.relations_graph.connexity

Return a dense numpy array of boolean where m[i, j] is true if there is a relation between the term number i and the term number j.

from ieml.dictionary import term

t0 = term('wa.')
t1 = term('we.')
m[t0.index, t1.index]

The term function with a string argument call the dictionary parser and return a Term if the string is a valid IEML expression of a term (defined in the dictionary).

Syntax

A syntactic meaning unit is called an USL, for Uniform Semantic Locator. There is five differents types of USL :

  • Word : the basic meaning constituent, you can find all the defined words in the IEML dictionary.
  • Topic: a topic aggregate Words into a root and a flexing morphem, a topic represents a subject, a process.
  • Fact : a fact is a syntactic tree of topics, a fact symbolizes an event, a description.
  • Theory: a theory is a tree of facts, it represents a set of sentence linked together by causal, temporal, logic links etc.
  • Text: a text is a set of Topic, Fact and Theory.

To instantiate an usl, you can use the USL parser with the usl function with a string argument.

from ieml.grammar import usl

usl('[([wa.])]') # topic with a single word
usl("[([t.u.-s.u.-d.u.-']+[t.u.-b.u.-'])*([b.i.-])]") # topic with two words in his root morphem and one in flexing 

You can also create an usl with constructors :

from ieml.grammar import word, topic, fact, theory, text

w = word('wa.')
t0 = topic([w])
t1 = topic(['wa.', 'e.'])
t2 = topic(root=["t.u.-s.u.-d.u.-'", "t.u.-b.u.-'"], 
           flexing=["b.i.-"])
f = fact([(t2, t0, t1)])

t = text([t0, t1, t2, f])

For any usls, you can access the words, topics, facts, theories and texts defined in the usl by accessing the dedicated property:

t.words
t.topics
t.facts
t.theories
t.texts

Each of these properties returns a set of USLs of the specific type.

For any couple of usl, you can compute a semantic similarity measure based on the relation matrix of the dictionary :

from ieml.grammar.distance import dword
from ieml.grammar.tools import random_usl
u0 = random_usl(Topic)
u1 = random_usl(Text)

dword(u0, u1)

For the moments, only a similarity using the words of the USL is defined.

Collection of USLs

For a list of USLs, you can compute a square matrix of relative order from each USLs :

from ieml.distance.sort import square_order_matrix

usl_list = [random_usl() for _ in range(100)]

m = square_order_matrix(usl_list)

i = 20
ordered_usls = [usl_list[k] for k in m[i, :]]

ordered_usls is the list of usl ordered from USLs number i to the farrest USL from USL i in the collection. This method use the semantic distance between words of the dictionary.

Contributors

This language is being made by the French philosopher Pierre Levy. This library is being developped by Louis van Beurden.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].