# lingexpr: Creator of functions representing linguistic expressions In beerda/lfl: Linguistic Fuzzy Logic

## Description

A linguistic expression represents vague human terms such as "very small", "extremely big" etc. Such notions are always reasoned within a given context. `lingexpr` returns a function that models a selected linguistic expression. Accordingly to the given `context`, `atomic` expression (such as "small", "big") and a linguistic `hedge` (such as `very`, `extremely`), the returned function transforms numeric values into degrees (from `[0, 1]` interval), at which the values correspond to the expression.

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10``` ```lingexpr( context, atomic = c("sm", "me", "bi", "lm", "um", "ze", "neg.sm", "neg.me", "neg.bi", "neg.lm", "neg.um"), hedge = c("ex", "si", "ve", "ty", "-", "ml", "ro", "qr", "vr"), negated = FALSE, hedgeParams = defaultHedgeParams ) allowed.lingexpr ```

## Arguments

 `context` A context of linguistic expressions (see `ctx3()`, `ctx5()`, `ctx3bilat()` or `ctx5bilat()`) `atomic` An atomic expression whose horizon we would like to obtain `hedge` The type of the required linguistic hedge ('-' for no hedging) `negated` Negate the expression? (For instance, "not very small".) Negation is done using the `invol.neg()` function. `hedgeParams` Parameters that determine the shape of the hedges

## Format

An object of class `matrix` (inherits from `array`) with 9 rows and 11 columns.

## Details

Based on the context type, the following atomic expressions are allowed:

• `ctx3()` (trichotomy): small, medium, big;

• `ctx5()` (pentachotomy): small, lower medium, medium, upper medium, big;

• `ctx3bilat()` (bilateral trichotomy): negative big, negative medium, negative small, zero, small, medium, big;

• `ctx5bilat()` (bilateral pentachotomy): negative big, negative medium, negative small, zero, small, medium, big.

The values of the `atomic` parameter have the following meaning (in ascending order):

• `neg.bi`: big negative (far from zero)

• `neg.um`: upper medium negative (between medium negative and big negative)

• `neg.me`: medium negative

• `neg.lm`: lower medium negative (between medium negative and small negative)

• `neg.sm`: small negative (close to zero)

• `ze`: zero

• `sm`: small

• `lm`: lower medium

• `me`: medium

• `um`: upper medium

• `bi`: big

`hedge` parameter has the following meaning:

• `ex`: extremely,

• `si`: significantly,

• `ve`: very,

• `ty`: typically,

• `-`: empty hedge,

• `ml`: more or less,

• `ro`: roughly,

• `qr`: quite roughly,

• `vr`: very roughly.

Accordingly to the theory of linguistic expressions by Novak, not every hedge is applicable to each atomic expression. The combinations of allowed pairs can be found in allowed.lingexpr. Trying to create forbidden combination results in error.

## Value

Returns a function with a single argument, which has to be a numeric vector.

## Author(s)

Michal Burda

`horizon()`, `hedge()`, `fcut()`, `lcut()`, `ctx()`
 ```1 2 3 4 5 6 7``` ``` small <- lingexpr(ctx3(0, 0.5, 1), atomic='sm', hedge='-') small(0) # 1 small(0.8) # 0 plot(small) verySmall <- lingexpr(ctx3(0, 0.5, 1), atomic='sm', hedge='ve') plot(verySmall) ```