AI Code Checker Python

AI Code Checker Python — independent reviews, comparisons, pricing and step-by-step guides on Aizhi.

  • Hybrid intelligent system

    Hybrid intelligent system

    Hybrid intelligent system denotes a software system which employs, in parallel, a combination of methods and techniques from artificial intelligence subfields, such as: Neuro-symbolic systems Neuro-fuzzy systems Hybrid connectionist-symbolic models Fuzzy expert systems Connectionist expert systems Evolutionary neural networks Genetic fuzzy systems Rough fuzzy hybridization Reinforcement learning with fuzzy, neural, or evolutionary methods as well as symbolic reasoning methods. From the cognitive science perspective, every natural intelligent system is hybrid because it performs mental operations on both the symbolic and subsymbolic levels. For the past few years, there has been an increasing discussion of the importance of A.I. Systems Integration. Based on notions that there have already been created simple and specific AI systems (such as systems for computer vision, speech synthesis, etc., or software that employs some of the models mentioned above) and now is the time for integration to create broad AI systems. Proponents of this approach are researchers such as Marvin Minsky, Ron Sun, Aaron Sloman, Angelo Dalli and Michael A. Arbib. An example hybrid is a hierarchical control system in which the lowest, reactive layers are sub-symbolic. The higher layers, having relaxed time constraints, are capable of reasoning from an abstract world model and performing planning (even by hybrid wisdom). Intelligent systems usually rely on hybrid reasoning processes, which include induction, deduction, abduction and reasoning by analogy.

    Read more →
  • Babelfy

    Babelfy

    Babelfy is a software algorithm for the disambiguation of text written in any language. It performs the tasks of multilingual Word Sense Disambiguation (i.e., the disambiguation of common nouns, verbs, adjectives and adverbs) and Entity Linking (i.e. the disambiguation of mentions to encyclopedic entities like people, companies, places, etc.). == Overview == Babelfy uses the BabelNet multilingual knowledge graph to perform disambiguation and entity linking in three steps: It associates with each vertex of the BabelNet semantic network, i.e., either concept or named entity, a semantic signature, that is, a set of related vertices. This is a preliminary step which needs to be performed only once, independently of the input text. Given an input text, it extracts all the linkable fragments from this text and, for each of them, lists the possible meanings according to the semantic network. It creates a graph-based semantic interpretation of the whole text by linking the candidate meanings of the extracted fragments using the previously computed semantic signatures. It then extracts a dense subgraph of this representation and selects the best candidate meaning for each fragment. As a result, the text, written in any of the 271 languages supported by BabelNet, is output with possibly overlapping semantic annotations.

    Read more →
  • OpenVINO

    OpenVINO

    OpenVINO is an open-source software toolkit developed by Intel for optimizing and deploying deep learning models. It supports several popular model formats and categories, such as large language models, computer vision, and generative AI. OpenVINO is optimized for Intel hardware, but offers support for ARM/ARM64 processors. It sees great use in AI Sound Processing drivers when tied with Intel's Gaussian & Neural Accelerator (GNA). Based in C++, it extends API support for C and Python, as well as Node.js (in early preview). OpenVINO is cross-platform and free for use under Apache License 2.0. == Workflow == The simplest OpenVINO usage involves obtaining a model and running it as is. Yet for the best results, a more complete workflow is suggested: obtain a model in one of supported frameworks, convert the model to OpenVINO IR using the OpenVINO Converter tool, optimize the model, using training-time or post-training options provided by OpenVINO's NNCF. execute inference, using OpenVINO Runtime by specifying one of several inference modes. == OpenVINO model format == OpenVINO IR is the default format used to run inference. It is saved as a set of two files, .bin and .xml, containing weights and topology, respectively. It is obtained by converting a model from one of the supported frameworks, using the application's API or a dedicated converter. Models of the supported formats may also be used for inference directly, without prior conversion to OpenVINO IR. Such an approach is more convenient but offers fewer optimization options and lower performance, since the conversion is performed automatically before inference. Some pre-converted models can be found in the Hugging Face repository. The supported model formats are: PyTorch TensorFlow TensorFlow Lite ONNX (including formats that may be serialized to ONNX) PaddlePaddle JAX/Flax == OS support == OpenVINO runs on Windows, Linux and MacOS.

    Read more →
  • Journal of Experimental and Theoretical Artificial Intelligence

    Journal of Experimental and Theoretical Artificial Intelligence

    The Journal of Experimental and Theoretical Artificial Intelligence is a quarterly peer-reviewed scientific journal published by Taylor and Francis. It covers all aspects of artificial intelligence and was established in 1989. The editor-in-chief is Eric Dietrich (Binghamton University), the deputy editors-in-chief are Li Pheng Khoo (School of Mechanical & Aerospace Engineering, Nanyang Technological University) and Antonio Lieto (Department of Computer Science, University of Turin). == Abstracting and indexing == The journal is abstracted and indexed in: According to the Journal Citation Reports, the journal has a 2020/2021 impact factor of 2.340 .

    Read more →
  • Continuum robot

    Continuum robot

    A continuum robot is a type of robot that is characterised by infinite degrees of freedom and number of joints. These characteristics allow continuum manipulators to adjust and modify their shape at any point along their length, granting them the possibility to work in confined spaces and complex environments where standard rigid-link robots cannot operate. In particular, we can define a continuum robot as an actuatable structure whose constitutive material forms curves with continuous tangent vectors. This is a fundamental definition that allows to distinguish between continuum robots and snake-arm robots or hyper-redundant manipulators: the presence of rigid links and joints allows them to only approximately perform curves with continuous tangent vectors. The design of continuum robots is bioinspired, as the intent is to resemble biological trunks, snakes and tentacles. Several concepts of continuum robots have been commercialised and can be found in many different domains of application, ranging from the medical field to undersea exploration. == Classification == Continuum robots can be categorised according to two main criteria: structure and actuation. === Structure === The main characteristic of the design of continuum robots is the presence of a continuously curving core structure, named backbone, whose shape can be actuated. The backbone must also be compliant, meaning that the backbone yields smoothly to external loads. According to the design principles chosen for the continuum manipulator, we can distinguish between: single-backbone: these continuum manipulators have one central elastic backbone through which actuation/transmission elements can run. multi-backbone: the structure of these continuum robots has two or more elastic elements (either rods or tubes) parallel to each other and constrained with one another in some way. concentric-tube: the backbone is made of concentric tubes that are free to rotate and translate between each other, depending on the actuation happening at the base of the robot. === Actuation === The actuation strategy of continuum manipulators can be distinguished between extrinsic or intrinsic actuation, depending on where the actuation happens: extrinsic actuation: the actuation happens outside the main structure of the robot and the forces are transmitted via mechanical transmission; among these techniques, there are cable/tendon driven actuators and multi-backbone strategies. intrinsic actuation: the actuation mechanism operates within the structure of the robot; these strategies include pneumatic or hydraulic chambers and the shape memory effect. The Actuated Flexible Manifold (AFM), introduced by Medina, Shapiro, and Shvalb (2016), models flexible grid-based robots that approximate smooth manifolds using discrete segments, each contributing one degree of freedom. Their work provides forward and inverse kinematics for planar and spatial configurations, bridging hyper-redundant and continuum robotics. == Advantages == The particular design of continuum robots offers several advantages with respect to rigid-link robots. First of all, as already said, continuum robots can more easily operate in environments that require a high level of dexterity, adaptability and flexibility. Moreover, the simplicity of their structure makes continuum robots more prone to miniaturisation. The rise of continuum robots has also paved the way for the development of soft continuum manipulators. These continuum manipulators are made of highly compliant materials that are flexible and can adapt and deform according to the surrounding environment. The "softness" of their material grants higher safety in human-robot interactions. == Disadvantages == The particular design of continuum robots also introduces many challenges. To properly and safely use continuum robots, it is crucial to have an accurate force and shape sensing system. Traditionally, this is done using cameras that are not suitable for some of the applications of continuum robots (e.g. minimally invasive surgery), or using electromagnetic sensors that are however disturbed by the presence of magnetic objects in the environment. To solve this issue, in the last years fiber-Bragg-grating sensors have been proposed as a possible alternative and have shown promising results. It is also necessary to notice that while the mechanical properties of rigid-link robots are fully understood, the comprehension of the behaviour and properties of continuum robots is still subject of study and debate. This poses new challenges in developing accurate models and control algorithms for this kind of robots. == Modelling == Creating an accurate model that can predict the shape of a continuum robot allows to properly control the robot's shape. There are three main approaches to model continuum robots: Cosserat rod theory: this approach is an exact solution to the static of a continuum robot, as it is not subject to any assumption. It solves a set of equilibrium equations between position, orientation, internal force and torque of the robot. This method requires to be solved numerically and it is therefore computationally expensive, due to its high complexity. Constant curvature: this technique assumes the backbone to be made of a series of mutually tangent sections that can be approximated as arcs with constant curvature. This approach is also known as piecewise constant-curvature. This assumption can be applied to the entire segment of the backbone or to its subsegments. This model has shown promising results, however it must be taken into account that the segment/subsegments of the backbone may not comply to the constant curvature assumption and therefore the model's behaviour may not entirely reflect the behaviour of the robot. Rigid-link model: this approach is based on the assumption that the continuum robot can be divided in small segments with rigid links. This is a strong assumption, since if the number of segments is too low, the model hardly behaves like the continuum robot, while increasing the number of segments means increasing the number of variables, and thus complexity. Despite this limitation, rigid-link modelling allows the use of the standard control techniques that are well known for rigid-link robots. It has been proven that this model can be coupled with shape and force sensing to mitigate its inaccuracy and can lead to promising results. == Sensing == To develop accurate control algorithms, it is necessary to complement the presented modelling techniques with real time shape sensing. The following options are currently available: Electromagnetic (EM) sensing: shape is reconstructed thanks to the mutual induction between a magnetic field generator and a magnetic field sensor. The most common external EM tracking system is the commercially available NDI Aurora: small sensors can be placed on the robot and their position is tracked in an external generated magnetic field. The validity of this method has been extensively assessed, however its performance is hindered by the limited workspace, whose dimension depends on the magnetic field. Another alternative is to embed the sensors internally in the continuum robot, combining magnetic sensors with Hall effect sensors: the magnetic field is measured at the level of the Hall effect sensors in order to estimate the deflection of the robot. However, it has been noticed that the higher the bending of the manipulator, the higher is the estimation error, due to crosstalk between sensors and magnets. Optical sensing: fiber Bragg grating sensors incorporated in an optical fiber can be embedded into the backbone of the continuum robot to estimate its shape; these sensors can only reflect a small range of the input light spectrum depending on their strain; therefore, by measuring the strain on each sensor it is possible to obtain the shape of the robot. This type of sensor is however expensive and is more prone to breaking in case of excessive strain, and this can happen in robots that can perform high deflections. == Control strategies == The control strategies can be distinguished in static and dynamic; the first one is based on the steady-state assumption, while the latter also considers the dynamic behaviour of the continuum robot. We can also differentiate between model-based controllers, that depend on a model of the robot, and model-free, that learn the robot's behaviour from data. Model-based static controllers: they rely on one of the modelling approaches presented above; once the model is defined, the kinematics must be inverted to obtain the desired actuator or configuration space variables. There are several ways to do this, like differential inverse kinematics, direct inversion or optimization. Model-free static controllers: these approaches learn directly, via machine learning techniques (e.g. regression methods and neural networks), the inverse kinematic or the direct kinematic representation of the con

    Read more →
  • IEEE Transactions on Pattern Analysis and Machine Intelligence

    IEEE Transactions on Pattern Analysis and Machine Intelligence

    IEEE Transactions on Pattern Analysis and Machine Intelligence (sometimes abbreviated as IEEE PAMI or simply PAMI) is a monthly peer-reviewed scientific journal published by the IEEE Computer Society. == Background == The journal covers research in computer vision and image understanding, pattern analysis and recognition, machine intelligence, machine learning, search techniques, document and handwriting analysis, medical image analysis, video and image sequence analysis, content-based retrieval of image and video, and face and gesture recognition. The editor-in-chief is Kyoung Mu Lee (Seoul National University). According to the Journal Citation Reports, the journal has a 2023 impact factor of 20.8.

    Read more →
  • Tree (abstract data type)

    Tree (abstract data type)

    In computer science, a tree is a widely used abstract data type that represents a hierarchical tree structure with a set of connected nodes. Each node in the tree can be connected to many children (depending on the type of tree), but must be connected to exactly one parent, except for the root node, which has no parent (i.e., the root node as the top-most node in the tree hierarchy). These constraints mean there are no cycles or "loops" (no node can be its own ancestor), and also that each child can be treated like the root node of its own subtree, making recursion a useful technique for tree traversal. In contrast to linear data structures, many trees cannot be represented by relationships between neighboring nodes (parent and children nodes of a node under consideration, if they exist) in a single straight line (called edge or link between two adjacent nodes). Binary trees are a commonly used type, which constrain the number of children for each parent to at most two. When the order of the children is specified, this data structure corresponds to an ordered tree in graph theory. A value or pointer to other data may be associated with every node in the tree, or sometimes only with the leaf nodes, which have no children nodes. The abstract data type (ADT) can be represented in a number of ways, including a list of parents with pointers to children, a list of children with pointers to parents, or a list of nodes and a separate list of parent-child relations (a specific type of adjacency list). Representations might also be more complicated, for example using indexes or ancestor lists for performance. Trees as used in computing are similar to but can be different from mathematical constructs of trees in graph theory, trees in set theory, and trees in descriptive set theory. == Terminology == A node is a structure which may contain data and connections to other nodes, sometimes called edges or links. Each node in a tree has zero or more child nodes, which are below it in the tree (by convention, trees are drawn with descendants going downwards). A node that has a child is called the child's parent node (or superior). All nodes have exactly one parent, except the topmost root node, which has none. A node might have many ancestor nodes, such as the parent's parent. Child nodes with the same parent are sibling nodes. Typically siblings have an order, with the first one conventionally drawn on the left. Some definitions allow a tree to have no nodes at all, in which case it is called empty. An internal node (also known as an inner node, inode for short, or branch node) is any node of a tree that has child nodes. Similarly, an external node (also known as an outer node, leaf node, or terminal node) is any node that does not have child nodes. The height of a node is the length of the longest downward path to a leaf from that node. The height of the root is the height of the tree. The depth of a node is the length of the path to its root (i.e., its root path). Thus the root node has depth zero, leaf nodes have height zero, and a tree with only a single node (hence both a root and leaf) has depth and height zero. Conventionally, an empty tree (tree with no nodes, if such are allowed) has height −1. Each non-root node can be treated as the root node of its own subtree, which includes that node and all its descendants. Other terms used with trees: Neighbor Parent or child. Ancestor A node reachable by repeated proceeding from child to parent. Descendant A node reachable by repeated proceeding from parent to child. Also known as subchild. Degree For a given node, its number of children. A leaf, by definition, has degree zero. Degree of tree The degree of a tree is the maximum degree of a node in the tree. Distance The number of edges along the shortest path between two nodes. Level The level of a node is the number of edges along the unique path between it and the root node. This is the same as depth. Width The number of nodes in a level. Breadth The number of leaves. Complete tree A tree with every level filled, except the last. Forest A set of one or more disjoint trees. Ordered tree A rooted tree in which an ordering is specified for the children of each vertex. Size of a tree Number of nodes in the tree. == Common operations == Enumerating all the items Enumerating a section of a tree Searching for an item Adding a new item at a certain position on the tree Deleting an item Pruning: Removing a whole section of a tree Grafting: Adding a whole section to a tree Finding the root for any node Finding the lowest common ancestor of two nodes === Traversal and search methods === Stepping through the items of a tree, by means of the connections between parents and children, is called walking the tree, and the action is a walk of the tree. Often, an operation might be performed when a pointer arrives at a particular node. A walk in which each parent node is traversed before its children is called a pre-order walk; a walk in which the children are traversed before their respective parents are traversed is called a post-order walk; a walk in which a node's left subtree, then the node itself, and finally its right subtree are traversed is called an in-order traversal. (This last scenario, referring to exactly two subtrees, a left subtree and a right subtree, assumes specifically a binary tree.) A level-order walk effectively performs a breadth-first search over the entirety of a tree; nodes are traversed level by level, where the root node is visited first, followed by its direct child nodes and their siblings, followed by its grandchild nodes and their siblings, etc., until all nodes in the tree have been traversed. == Representations == There are many different ways to represent trees. In working memory, nodes are typically dynamically allocated records with pointers to their children, their parents, or both, as well as any associated data. If of a fixed size, the nodes might be stored in a list. Nodes and relationships between nodes might be stored in a separate special type of adjacency list. In relational databases, nodes are typically represented as table rows, with indexed row IDs facilitating pointers between parents and children. Nodes can also be stored as items in an array, with relationships between them determined by their positions in the array (as in a binary heap). A binary tree can be implemented as a list of lists: the head of a list (the value of the first term) is the left child (subtree), while the tail (the list of second and subsequent terms) is the right child (subtree). This can be modified to allow values as well, as in Lisp S-expressions, where the head (value of first term) is the value of the node, the head of the tail (value of second term) is the left child, and the tail of the tail (list of third and subsequent terms) is the right child. Ordered trees can be naturally encoded by finite sequences, for example with natural numbers. == Examples of trees and non-trees == == Type theory == As an abstract data type, the abstract tree type T with values of some type E is defined, using the abstract forest type F (list of trees), by the functions: value: T → E children: T → F nil: () → F node: E × F → T with the axioms: value(node(e, f)) = e children(node(e, f)) = f In terms of type theory, a tree is an inductive type defined by the constructors nil (empty forest) and node (tree with root node with given value and children). == Mathematical terminology == Viewed as a whole, a tree data structure is an ordered tree, generally with values attached to each node. Concretely, it is (if required to be non-empty): A rooted tree with the "away from root" direction (a more narrow term is an "arborescence"), meaning: A directed graph, whose underlying undirected graph is a tree (any two vertices are connected by exactly one simple path), with a distinguished root (one vertex is designated as the root), which determines the direction on the edges (arrows point away from the root; given an edge, the node that the edge points from is called the parent and the node that the edge points to is called the child), together with: an ordering on the child nodes of a given node, and a value (of some data type) at each node. Often trees have a fixed (more properly, bounded) branching factor (outdegree), particularly always having two child nodes (possibly empty, hence at most two non-empty child nodes), hence a "binary tree". Allowing empty trees makes some definitions simpler, some more complicated: a rooted tree must be non-empty, hence if empty trees are allowed the above definition instead becomes "an empty tree or a rooted tree such that ...". On the other hand, empty trees simplify defining fixed branching factor: with empty trees allowed, a binary tree is a tree such that every node has exactly two children, each of which is a tree (possibly empty). == Applications == Trees are commonly used to represent or manipulate hierarchical data in ap

    Read more →
  • Meta Content Framework

    Meta Content Framework

    Meta Content Framework (MCF) is a specification of a content format for structuring metadata about web sites and other data. == History == MCF was developed by Ramanathan V. Guha at Apple Computer's Advanced Technology Group between 1995 and 1997. Rooted in knowledge-representation systems such as CycL, KRL, and KIF, it sought to describe objects, their attributes, and the relationships between them. One application of MCF was HotSauce, also developed by Guha while at Apple. It generated a 3D visualization of a web site's table of contents, based on MCF descriptions. By late 1996, a few hundred sites were creating MCF files and Apple HotSauce allowed users to browse these MCF representations in 3D. When the research project was discontinued, Guha left Apple for Netscape, where, in collaboration with Tim Bray, he adapted MCF to use XML and created the first version of the Resource Description Framework (RDF). == MCF format == An MCF file consists of one or more blocks, each corresponding to an entity. A block looks like this:The identifier is a unique identifier for that entity (more on the scope of the identifier below) and is used to refer to that entity. The following lines each specify a property and one or more values, separated by commas. Each value can be a reference to another entity (via its identifier), a string (enclosed by double quotes) or a number. For example:NOTE: The identifier must not include a comma (,) and must not be enclosed within double quotes. A common parsing failure is due to odd number of unescaped double quotes in text. For instance, "foo bar" baz" needs to be "foo bar\" baz". Commas within double quotes are not considered as value separators. Every entity has at least one property: typeOf.

    Read more →
  • SciPy

    SciPy

    SciPy (pronounced "sigh pie") is a free and open-source Python library used for scientific computing and technical computing. SciPy contains modules for optimization, linear algebra, integration, interpolation, special functions, fast Fourier transform, signal and image processing, ordinary differential equation solvers and other tasks common in science and engineering. SciPy is also a family of conferences for users and developers of these tools: SciPy (in the United States), EuroSciPy (in Europe) and SciPy.in (in India). Enthought originated the SciPy conference in the United States and continues to sponsor many of the international conferences as well as host the SciPy website. The SciPy library is currently distributed under the BSD license, and its development is sponsored and supported by an open community of developers. It is also supported by NumFOCUS, a community foundation for supporting reproducible and accessible science. == Components == The SciPy package is at the core of Python's scientific computing capabilities. Available sub-packages include: cluster: hierarchical clustering, vector quantization, K-means constants: physical constants and conversion factors datasets: various example datasets for demonstrating image and data processing differentiate: numerical differentiation for first and second derivatives fft: Discrete Fourier Transform algorithms fftpack: Legacy interface for Discrete Fourier Transforms integrate: numerical integration routines interpolate: interpolation tools io: data input and output, including support for MATLAB and Matrix Market files linalg: linear algebra routines ndimage: various functions for multi-dimensional image processing odr: orthogonal distance regression classes and algorithms optimize: optimization algorithms including linear programming and a variety of numerical nonlinear programming optimizers signal: signal processing tools sparse: sparse matrices and related algorithms spatial: algorithms for spatial structures such as k-d trees, nearest neighbors, convex hulls, etc. special: special functions stats: statistical functions == Data structures == The basic data structure used by SciPy is a multidimensional array provided by the NumPy module. NumPy provides some functions for linear algebra, Fourier transforms, and random number generation, but not with the generality of the equivalent functions in SciPy. NumPy can also be used as an efficient multidimensional container of data with arbitrary datatypes. This allows NumPy to seamlessly and speedily integrate with a wide variety of databases. Older versions of SciPy used Numeric as an array type, which is now deprecated in favor of the newer NumPy array code. == History == In the 1990s, Python was extended to include an array type for numerical computing called Numeric. (This package was eventually replaced by NumPy, which was written by Travis Oliphant in 2006 as a blending of Numeric and Numarray, with Numarray itself being started in 2001.) As of 2000, there was a growing number of extension modules and increasing interest in creating a complete environment for scientific and technical computing. In 2001, Travis Oliphant, Eric Jones, and Pearu Peterson merged code they had written and called the resulting package SciPy. The newly created package provided a standard collection of common numerical operations on top of the Numeric array data structure. Shortly thereafter, Fernando Pérez released IPython, an enhanced interactive shell widely used in the technical computing community, and John Hunter released the first version of Matplotlib, the 2D plotting library for technical computing. Since then the SciPy environment has continued to grow with more packages and tools for technical computing. == Scientific Python versus ScientificPython == In the scientific literature, SciPy is occasionally referred to as "Scientific Python (SciPy)". This is incorrect: the official name of the project is just "SciPy". Furthermore, expanding "SciPy" as "Scientific Python" may cause confusion with "ScientificPython", a project led by Konrad Hinsen of Orléans University that was active between 1995 and 2014. "Scientific Python" is also used for the related ecosystem of tools.

    Read more →
  • Kindwise

    Kindwise

    FlowerChecker, also known as Kindwise, is a company that uses machine learning to identify natural objects from images. This includes plants and their diseases, but also insects and mushrooms. It is based in Brno, Czech Republic. It was founded in 2014 by Ondřej Veselý, Jiří Řihák, and Ondřej Vild, at the time Ph.D. students. == Features & Tools == FlowerChecker offers multiple products. Plant.id is a machine learning-based plant identification API launched in 2018, with the plant disease identification API, plant.health, released in April 2022. The plant.id API is suitable for integration into other software, such as mobile apps or urban trees from remote-sensing imagery. Other products include insect.id, mushroom.id and crop.health are machine learning-based identification APIs for the identification of insects, fungi and economically important plants, respectively, and include also online public demos. The FlowerChecker app was discontinued in October 2024 after 10 years of successful operation. == Recognition == In 2019, FlowerChecker won the Idea of the Year award in the AI Awards organized by the Confederation of Industry of the Czech Republic. In 2020, an academic study comparing ten free automated image recognition apps showed that plant.id's performance excelled in most of the parameters studied. In an independent study comparing different image-based species recognition models and their suitability for recognizing invasive alien species, the plant.id achieved the highest accuracy compared to other tools. In a subsequent study, plant.id was utilized to evaluate urban forest biodiversity using remote-sensing imagery, achieving the highest accuracy in tree species identification among compared methods. The technology has also been referenced as an example of practical integration of AI-based plant identification into cross-platform precision agriculture systems. == Research activities == Flowerchecker cooperates with the Nature Conservation Agency of the Czech Republic on a biodiversity mapping project. FlowerChecker plans to adapt its services to participate in the control of invasive species. In 2022, the company entered a consortium to develop a weeder capable of in-row weed detection and removal. In 2025, it received funding for the development of a technology for the removal of invasive species.

    Read more →
  • Linde–Buzo–Gray algorithm

    Linde–Buzo–Gray algorithm

    The Linde–Buzo–Gray algorithm (named after its creators Yoseph Linde, Andrés Buzo and Robert M. Gray, who designed it in 1980) is an iterative vector quantization algorithm to improve a small set of vectors (codebook) to represent a larger set of vectors (training set), such that it will be locally optimal. It combines Lloyd's Algorithm with a splitting technique in which larger codebooks are built from smaller codebooks by splitting each code vector in two. The core idea of the algorithm is that by splitting the codebook such that all code vectors from the previous codebook are present, the new codebook must be as good as the previous one or better. == Description == The Linde–Buzo–Gray algorithm may be implemented as follows: algorithm linde-buzo-gray is input: set of training vectors training, codebook to improve old-codebook output: codebook that is twice the size and better or as good as old-codebook new-codebook ← {} for each old-codevector in old-codebook do insert old-codevector into new-codebook insert old-codevector + 𝜖 into new-codebook where 𝜖 is a small vector return lloyd(new-codebook, training) algorithm lloyd is input: codebook to improve, set of training vectors training output: improved codebook do previous-codebook ← codebook clusters ← divide training into |codebook| clusters, where each cluster contains all vectors in training who are best represented by the corresponding vector in codebook for each cluster cluster in clusters do the corresponding code vector in codebook ← the centroid of all training vectors in cluster while difference in error representing training between codebook and previous-codebook > 𝜖 return codebook

    Read more →
  • Mittens (chess)

    Mittens (chess)

    Mittens is a chess engine developed by Chess.com. It was released on January 1, 2023, alongside four other engines, all of them given cat-related names. The engine became a viral sensation in the chess community due to exposure through content made by chess streamers and a social media marketing campaign, later contributing to record levels of traffic to the Chess.com website and causing issues with database scalability. Mittens was given a rating of one point by Chess.com, although it was evidently stronger than that. Various chess masters played matches against the engine, with players such as Hikaru Nakamura and Levy Rozman drawing and losing their games respectively. A month after its release, Mittens was removed from the website on February 1, as expected through Chess.com's monthly bot cycles. In December 2023, Mittens was brought back in a group of Chess.com's most popular bots of 2023. In January 2024, Mittens was removed again. == Release == Mittens was released on January 1, 2023, as part of a New Year event on Chess.com. It was one of five engines released, all with names related to cats. The other engines released were named Scaredy Cat, rated 800; Angry Cat, rated 1000; Mr. Grumpers, rated 1200 and Catspurrov (a pun on Garry Kasparov), rated 1400. As part of the announcement, a picture of each engine was accompanied by a short description of its character. The description given for Mittens suggested that the engine was hiding something, reading: Mittens likes chess… But how good is she? Of the five engines released, Mittens was by far the most popular. In December 2023, Chess.com re-released Mittens as part of a "best of 2023" group of chess bots made to showcase their most popular bots of the year. == Design == Mittens was conceptualized by Chess.com employee Will Whalen. Appearing as a kitten, Mittens trash talked its opponents with a selection of voice lines: these lines included quotes from J. Robert Oppenheimer, Vincent van Gogh and Friedrich Nietzsche, as well as the 1967 film Le Samouraï. The engine's "personality" was devised by a writing team headed by Sean Becker, and Marija Casic provided the engine's graphics. Chess.com did not disclose any information about the software running the engine. It may be based on Chess.com's Komodo Dragon 3 engine. Mittens' strategy was to slowly grind down an opponent, a tactic likened to the playing style of Anatoly Karpov. Becker stated that the design team believed it would be "way more demoralizing and funny" for the engine to play this way. According to Hikaru Nakamura, Mittens sometimes missed the best move (or winning positions). == Rating == On Chess.com, Mittens had a rating of one point. However, the engine's playing style and tactics showed that it was stronger than that; Mittens was able to beat or draw against many top human players. In an interview with CNN Business, Whalen stated that the idea behind giving Mittens a rating of one was to surprise its opponents, giving it the upper hand psychologically. Estimates of Mittens' true rating range from an Elo of 3200 to 3500, because of its ability to beat other engines of around that level. An upper bound of the engine's rating was found after Levy Rozman made Mittens play against Stockfish 15, a 3700 rated engine. Mittens lost the two games that the engines played. The range of Mittens' possible ratings was summarized by Dot Esports, who stated: It seems like she’s around the 3200–3500 rating range (in Chess.com terms, where the best human players, like Magnus Carlsen and Hikaru Nakamura, sport a 3000–3100 rating in the faster formats), as evidenced by her victories over the site’s otherwise strongest, 3200-rated bots, and her defeat to Stockfish 15, which is currently rated around 3700. == Games == Against human players, Mittens won over 99 percent of the millions of games it played. Chess players such as Hikaru Nakamura, Benjamin Bok, Levy Rozman and Eric Rosen struggled against Mittens; while Rozman and Rosen both lost against the engine, Nakamura and Bok were both able to make a draw. In particular, Nakamura's game against the engine lasted 166 moves; he was playing as White. Bok, Benjamin Finegold and Rozman later went on to win against Mittens, the latter with engine assistance from Stockfish. Magnus Carlsen publicly refused to play the engine, calling it a "transparent marketing trick" and "a soulless computer". Against other chess engines, Mittens participated in the Chess.com Computer Chess Championship as a side act. In the competition, Mittens played 150 games against an engine named after the film M3GAN and won overall with a score of 81.5 to 68.5. This equated to 54 percent of the games played. During the event, an estimate of Mittens' rating was made at 3515 points. == Impact == Mittens went viral in the chess community due to its concept and design: according to an announcement by Chess.com, a combined total of 120 million games were played against the cat engines over the course of January, with around 40 million played against Mittens. The popularity of the engine was helped by the social media exposure created by Chess.com. This included creating an official Twitter account to promote the engine. Chess streamers like Rozman and Nakamura helped cultivate this by creating content around the engine. A video by Nakamura entitled "Mittens the chess bot will make you quit chess" gained over 3.5 million views on YouTube. On January 11, Chess.com reported issues with database scalability due to record levels of traffic: 40 percent more games had been played on Chess.com in January 2023 than any other month since the website's release. According to The Wall Street Journal, the popularity spike was more than the similar surge following the release of Netflix's The Queen's Gambit. The popularity of Mittens was cited by Chess.com as a reason for this instability. The problems continued throughout January; Chess.com stated that they would have to upgrade their servers and invest more in cloud computing to solve the problems caused by the website's popularity surge. On February 1, 2023, Mittens and the other cat engines were removed from the computer section of Chess.com. They were replaced with five new engines themed around artificial intelligence. A tweet was posted on the Mittens's Twitter account after the engine's removal, reading "This is just the beginning. Goodbye for now."

    Read more →
  • Sketch Engine

    Sketch Engine

    Sketch Engine is a corpus manager and text analysis software developed by Lexical Computing since 2003. Its purpose is to enable people studying language behaviour (lexicographers, researchers in corpus linguistics, translators or language learners) to search large text collections according to complex and linguistically motivated queries. Sketch Engine gained its name after one of the key features, word sketches: one-page, automatic, corpus-derived summaries of a word's grammatical and collocational behaviour. Currently, it supports and provides corpora in over 100 languages. == History of development == Sketch Engine is a product of Lexical Computing, a company founded in 2003 by the lexicographer and research scientist Adam Kilgarriff. He started a collaboration with Pavel Rychlý, a computer scientist working at the Natural Language Processing Centre, Masaryk University, and the developer of Manatee and Bonito (two major parts of the software suite). Kilgarriff also introduced the concept of word sketches. Since then, Sketch Engine has been commercial software, however, all the core features of Manatee and Bonito that were developed by 2003 (and extended since then) are freely available under the GPL license within the NoSketch Engine suite. == Features == A list of tools available in Sketch Engine: Word sketches – a one-page automatic derived summary of a word's grammatical and collocational behaviour Word sketch difference – compares and contrasts two words by analysing their collocations Distributional thesaurus – automated thesaurus for finding words with similar meaning or appearing in the same/similar context Concordance search – finds occurrences of a word form, lemma, phrase, tag or complex structure Collocation search – word co-occurrence analysis displaying the most frequent words (for a search word) which can be regarded as collocation candidates Word lists – generates frequency lists which can be filtered with complex criteria n-grams – generates frequency lists of multi-word expressions Terminology / Keyword extraction (both monolingual and bilingual) – automatic extraction of key words and multi-word terms from texts (based on frequency count and linguistic criteria) Diachronic analysis (Trends) – detecting words which undergo changes in the frequency of use in time (show trending words) Corpus building and management – create corpora from the Web or uploaded texts including part-of-speech tagging and lemmatization which can be used as data mining software Parallel corpus (bilingual) facilities – looking up translation examples (EUR-Lex corpus, Europarl corpus, OPUS corpus, etc.) or building a parallel corpus from own aligned texts Text type analysis – statistics of metadata in the corpus === Keywords and terminology extraction === Sketch Engine can perform automatic term extraction by identifying words typical of a particular corpus, document, or text. Single words and multi-word units can be extracted from monolingual or bilingual texts. The terminology extraction feature provides a list of relevant terms based on comparison with a large corpus of general language. This functionality is also available as a separate service called OneClick Terms with a dedicated interface. === SKELL === A free web service based on Sketch Engine and aimed at language learners and teachers is SKELL (formerly SkELL). It exploits Sketch Engine's proprietary GDEX (Good Dictionary Examples) scoring function to provide authentic example sentences for specific target words. Results are drawn from a special corpus of high-quality texts covering everyday, standard, formal, and professional language and displayed as a concordance. SKELL also includes simplified versions of Sketch Engine's word sketch and thesaurus functions. It has been suggested that SKELL can be used, for instance, to help students understand the meaning and/or usage of a word or phrase; to help teachers wanting to use example sentences in a class; to discover and explore collocates; to create gap-fill exercises; to teach various kinds of homonyms and polysemous words. SKELL was first presented in 2014, when only English was supported. Later, support was added for Russian, Czech, German, Italian and Estonian. == List of text corpora == Sketch Engine provides access to more than 800 text corpora. There are monolingual as well as multilingual corpora of different sizes (from one thousand words up to 85 billion words) and various sources (e.g. web, books, subtitles, legal documents). The list of corpora includes British National Corpus, Brown Corpus, Cambridge Academic English Corpus and Cambridge Learner Corpus, CHILDES corpora of child language, OpenSubtitles (a set of 60 parallel corpora), 24 multilingual corpora of EUR-Lex documents, the TenTen Corpus Family (multi-billion web corpora), and Trends corpora (monitor corpora with daily updates). == Architecture == Sketch Engine consists of three main components: an underlying database management system called Manatee, a web interface search front-end called Bonito, and a web interface for corpus building and management called Corpus Architect. === Manatee === Manatee is a database management system specifically devised for effective indexing of large text corpora. It is based on the idea of inverted indexing (keeping an index of all positions of a given word in the text). It has been used to index text corpora comprising tens of billions of words. Searching corpora indexed by Manatee is performed by formulating queries in the Corpus Query Language (CQL). Manatee is written in C++ and offers an API for a number of other programming languages including Python, Java, Perl and Ruby. Recently, it was rewritten into Go for faster processing of corpus queries. === Bonito === Bonito is a web interface for Manatee providing access to corpus search. In the client–server model, Manatee is the server and Bonito plays the client part. It is written in Python. === Corpus Architect === Corpus Architect is a web interface providing corpus building and management features. It is also written in Python. == Applications == Sketch Engine has been used by major British and other publishing houses for producing dictionaries such as Macmillan English Dictionary, Dictionnaires Le Robert, Oxford University Press or Shogakukan. Four of United Kingdom's five biggest dictionary publishers use Sketch Engine.

    Read more →
  • General Problem Solver

    General Problem Solver

    General Problem Solver (GPS) is a computer program created in 1957 by Herbert A. Simon, J. C. Shaw, and Allen Newell (RAND Corporation) intended to work as a universal problem solver machine. In contrast to the former Logic Theorist project, the GPS works with means–ends analysis. == Overview == Any problem that can be expressed as a set of well-formed formulas (WFFs) or Horn clauses, and that constitutes a directed graph with one or more sources (that is, hypotheses) and sinks (that is, desired conclusions), can be solved, in principle, by GPS. Proofs in the predicate logic and Euclidean geometry problem spaces are prime examples of the domain of applicability of GPS. It was based on Simon and Newell's theoretical work on logic machines. GPS was the first computer program that separated its knowledge of problems (rules represented as input data) from its strategy of how to solve problems (a generic solver engine). GPS was implemented in the third-order programming language, IPL. While GPS solved simple problems such as the Towers of Hanoi that could be sufficiently formalized, it could not solve any real-world problems because the search was easily lost in the combinatorial explosion. Put another way, the number of "walks" through the inferential digraph became computationally untenable. (In practice, even a straightforward state space search such as the Towers of Hanoi can become computationally infeasible, albeit judicious prunings of the state space can be achieved by such elementary AI techniques as A and IDA). The user defined objects and operations that could be done on the objects, and GPS generated heuristics by means–ends analysis in order to solve problems. It focused on the available operations, finding what inputs were acceptable and what outputs were generated. It then created subgoals to get closer and closer to the goal. The GPS paradigm eventually evolved into the Soar architecture for artificial intelligence.

    Read more →
  • Sentential decision diagram

    Sentential decision diagram

    In artificial intelligence, a sentential decision diagram (SDD) is a type of knowledge representation used in knowledge compilation to represent Boolean functions. SDDs can be viewed as a generalization of the influential ordered binary decision diagram (OBDD) representation, by allowing decisions on multiple variables at once. Like OBDDs, SDDs allow for tractable Boolean operations, while being exponentially more succinct. For this reason, they have become an important representation in knowledge compilation. == Properties == SDDs are defined with respect to a generalization of variable ordering known as a variable tree (vtree). Provided that they satisfy additional properties known as compression and trimming (which are analogous to ROBDDs), SDDs are a canonical representation of Boolean functions; that is, they are unique given a vtree. Like OBDDs, they allow for operations such as conjunction, disjunction and negation to be computed directly on the representation in polynomial time, while being potentially more compact. They also allow for polynomial-time model counting. SDDs are known to be exponentially more succinct than OBDDs. == Applications == SDDs are used as a compilation target for probabilistic logic programs by the ProbLog 2 system since they support tractable (weighted) model counting as well as tractable negation, conjunction and disjunction while being more succinct than BDDs. SDDs have also been extended to model probability distributions, in which context they are known as probabilistic sentential decision diagrams (PSDD).

    Read more →