<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bragisoft</title>
	<atom:link href="http://bragisoft.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://bragisoft.com</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Wed, 16 May 2012 15:31:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Aici for android 0.2.0</title>
		<link>http://bragisoft.com/2012/05/aici-for-android-0-2-0/</link>
		<comments>http://bragisoft.com/2012/05/aici-for-android-0-2-0/#comments</comments>
		<pubDate>Wed, 16 May 2012 15:27:55 +0000</pubDate>
		<dc:creator>bragi</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://bragisoft.com/?p=443</guid>
		<description><![CDATA[There&#8217;s a new version available for the android application. Lots of improvements have been made, both in the front and backsides of the application. You can now: Change the appearance of application (background, fonts, colors) search for images open the photo gallery open google start gmail There was also a nasty deadlock bug still lurking [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a new version available for the android application. Lots of improvements have been made, both in the front and backsides of the application. You can now:</p>
<ul>
<li>Change the appearance of application (background, fonts, colors)</li>
<li>search for images</li>
<li>open the photo gallery</li>
<li>open google</li>
<li>start gmail</li>
</ul>
<p>There was also a nasty deadlock bug still lurking around that only became apparent on the android platform (different threading model from windows, I guess). This should be fixed now. Lots of small improvements have also been added to speed up operations, this is still an ongoing process.</p>
]]></content:encoded>
			<wfw:commentRss>http://bragisoft.com/2012/05/aici-for-android-0-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aici for android 0.1.7</title>
		<link>http://bragisoft.com/2012/04/aici-for-android-1-7/</link>
		<comments>http://bragisoft.com/2012/04/aici-for-android-1-7/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 13:34:53 +0000</pubDate>
		<dc:creator>bragi</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[aici]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[battery]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://bragisoft.com/?p=436</guid>
		<description><![CDATA[A new version has just been uploaded for the android application (the windows apps were also updated, but they only have some small memory fixes, which aren&#8217;t that important for them). The latest Aici app can now report the battery state, voltage and temperature. Internally, it&#8217;s memory usage also been improved considerably, resulting in much [...]]]></description>
			<content:encoded><![CDATA[<p>A new version has just been uploaded for the android application (the windows apps were also updated, but they only have some small memory fixes, which aren&#8217;t that important for them).</p>
<p>The latest Aici app can now report the battery state, voltage and temperature. Internally, it&#8217;s memory usage also been improved considerably, resulting in much better performance, except for the first input statement, which is still dead slow (fixes are under way).</p>
<p>The next release will most likely have something to do with customising part of the look of the application (you know, backgrounds, fonts, colours,..</p>
<p>&nbsp;</p>
<p>Get the latest version from <a title="download section" href="http://bragisoft.com/download/">the download section</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bragisoft.com/2012/04/aici-for-android-1-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aici for android 0.1.6</title>
		<link>http://bragisoft.com/2012/04/aici-for-android-0-1-6/</link>
		<comments>http://bragisoft.com/2012/04/aici-for-android-0-1-6/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 12:57:01 +0000</pubDate>
		<dc:creator>bragi</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://bragisoft.com/?p=434</guid>
		<description><![CDATA[I released a new version of the android application. Just a few simple improvements: the database files got smaller (due to the fact that ulongs are now stored with only the valid number of bytes and not the full 64 bits. And memory usage also got improved a little. Both features should make the app [...]]]></description>
			<content:encoded><![CDATA[<p>I released a new version of the android application. Just a few simple improvements: the database files got smaller (due to the fact that ulongs are now stored with only the valid number of bytes and not the full 64 bits. And memory usage also got improved a little. Both features should make the app run a little faster. There&#8217;s still some work to be done though (plenty of more things that can be improved).</p>
]]></content:encoded>
			<wfw:commentRss>http://bragisoft.com/2012/04/aici-for-android-0-1-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chatbot designer updated</title>
		<link>http://bragisoft.com/2012/04/chatbot-designer-updated/</link>
		<comments>http://bragisoft.com/2012/04/chatbot-designer-updated/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 14:26:08 +0000</pubDate>
		<dc:creator>bragi</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[chatbot designer]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://bragisoft.com/?p=427</guid>
		<description><![CDATA[Together with the android version, all the windows editions have also been updated. Lots of new features have been added/improved: manage the android device from within the application updated asset editor a new chat-log history view (view/tool windows/chatlog history) some internal fixes improved voice input (new setting available for this in the ‘chatbot properties’ window) [...]]]></description>
			<content:encoded><![CDATA[<p>Together with the <a href="http://bragisoft.com/2012/04/aici-for-android-finally-released/" target="_blank">android version</a>, all the windows editions have also been updated. Lots of new features have been added/improved:</p>
<ul>
<li>manage the android device from within the application </li>
<li>updated asset editor </li>
<li>a new chat-log history view (view/tool windows/chatlog history) </li>
<li>some internal fixes </li>
<li>improved voice input (new setting available for this in the ‘chatbot properties’ window) </li>
<li>thesaurus search has been improved. </li>
<li>thesaurus import has been improved </li>
<li>thesaurus paths (in input patterns) have an extra pos filter type: ‘any’, for allowing any part of speech. </li>
<li>thesaurus paths (in input and output patterns) have an extra optional part for selecting the relationship type (ex: ^w<em>-&gt;pertainym</em>:<em>any</em>.something) </li>
<li>Rule layout has been changed: the ‘Response for’ field has been moved from the ‘output’ items to the root of the rule </li>
<li>the ‘questions-answers’ demo has been updated. </li>
<li>InvalidRespones: the list can now be assigned sequential or random (for selecting an item) </li>
<li>InvalidResponse: a single invalid response can now determine if the bot needs to continue waiting for a valid response or not. </li>
<li>thesaurus variables in input patterns </li>
<li>the layout of topic editors has been updated (use the first toolbar button to toggle between editing modes) </li>
<li>generic data import has been added which uses topics to declare how data needs to be imported. </li>
<li>changed the labeling from ‘bot says’ to ‘output’ and ‘you say’ to ‘input’ to better reflect all the usage cases and not just for defining chat statements. </li>
</ul>
<p>And for the websites:</p>
<ul>
<li>websites can now be installed to any server you like (path can be defined) (servers must support .net 4, MVC3) </li>
<li>the css file is properly used in the websites (which allows customization) </li>
<p> <!--EndFragment--></ul>
<ul>
<ul>
<p><!--EndFragment--></p>
</ul>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://bragisoft.com/2012/04/chatbot-designer-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aici for android finally released</title>
		<link>http://bragisoft.com/2012/04/aici-for-android-finally-released/</link>
		<comments>http://bragisoft.com/2012/04/aici-for-android-finally-released/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 14:22:16 +0000</pubDate>
		<dc:creator>bragi</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[aici]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://bragisoft.com/?p=425</guid>
		<description><![CDATA[Long, long overdue, but it’s finally been set loos. There were quite a few hurdles to overtake, and some are still there. It was an educative journey indeed. Anyway, you can get the app from the downloads section or Google play. Known issues still remaining contact info needs to be partially imported at the moment, [...]]]></description>
			<content:encoded><![CDATA[<p>Long, long overdue, but it’s finally been set loos. There were quite a few hurdles to overtake, and some are still there. It was an educative journey indeed. Anyway, you can get the app from the <a href="http://bragisoft.com/download/" target="_blank">downloads</a> section or <a href="https://play.google.com/store/apps/details?id=com.bragisoft.aici" target="_blank">Google play</a>.</p>
<ul>Known issues still remaining
<li>contact info needs to be partially imported at the moment, hoping to change this in the future. </li>
<li>the contact info sync screen closes extremely slow when the process is done (most likely due to garbage collection). </li>
<li>the first input is processed much slower then the rest. This is due to disk access latencies. </li>
<li>Accessing the disk is generally very slow so better caching needs to be added. </li>
<li>The contact info search algorithms are very limited at the moment, this will be fixed </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://bragisoft.com/2012/04/aici-for-android-finally-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Input patterns</title>
		<link>http://bragisoft.com/2012/04/input-patterns/</link>
		<comments>http://bragisoft.com/2012/04/input-patterns/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 13:51:30 +0000</pubDate>
		<dc:creator>bragi</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://bragisoft.com/?p=419</guid>
		<description><![CDATA[A technical description of the pattern matcher language that is used by the system. Statics, variables, thesaurus variables, operators and sub topics/rules are all covered.]]></description>
			<content:encoded><![CDATA[<p>An input pattern declares a known text structure for which the bot has a response. Input patterns that have the same output are grouped together in a rule.  Multiple rules that have something in common are grouped together in a topic. An input pattern can consist of: statics, variables, thesaurus variables, operators, sub-topics and/or sub-rules.</p>
<h3>Statics</h3>
<p>A static is a regular word, number or sign that has to be matched with the input, depending on the chatbot’s properties, this has to be an exact match or a synonym Spaces and capitals in the input patterns have no importance: spaces (also newlines and tabs) are skipped and capitals are removed. ex:</p>
<blockquote><p>This is a test.<br />
Some static text.<br />
I am Jan.</p></blockquote>
<p>Statics have the highest precedence value, so if there are 2 rules that can both match the same input, but the first rule is using all statics and the second isn’t, than the ‘all-statics’ comes first.</p>
<h3>Variables</h3>
<p>A variable is a named, temporary memory location that will store the input found at the same position as the variable was declared in the pattern. Variables can come in 3 flavors: with a specific length, a range or no length specification.  All can be ‘space collectors’ or not.</p>
<h4>Variables with length</h4>
<p>The first case is the simplest, this type of variable will only collect the specified amount of input tokens. As an example, take:</p>
<blockquote><p>Is $name:1 your name?</p>
<p>Is $name:2 your name?</p></blockquote>
<p>The first example will collect  only 1 word in the variable called ‘name’. So an input ‘Is Aici your name?’ will match, but ‘Is Marie Antoinette your name’ will not.  I’ve added the second example to show what happens with spaces: by default, they are skipped and not counted. So ‘Is Marie Antoinette your name’ will match with the second pattern.</p>
<p>Any type of input part can follow this type of variable, including other variables. This is because the number of words that the variable should collect is always fixed and doesn’t depend on what comes after the variable.</p>
<h4>Variables with a range</h4>
<p>The second class of variables defines a range. The range determines the minimum and maximum number of words that the variable should collect.  It will stop collecting input before the maximum is reached, when a token is found in the input that is a known next-value of the variable. For this reason, no other variable can come after a ranged-var. That’s because variables can collect any kind of token, so it would be impossible to know where the first variable stops and the second begins. Ex:</p>
<blockquote><p>Is $name:1-2 your name?</p></blockquote>
<p>This example will match both ‘Is Aici your name?’ and ‘Is Marie Antoinette your name’.</p>
<h4>Regular variables</h4>
<p>This type of variable will continue to collect tokens until a known follower of the variable or the end of the input is encountered. As with ranged variables, no other variable can follow this type. Ex:</p>
<blockquote><p>Is $name your name?</p></blockquote>
<p>This will match any input of the form ‘Is x your name?’ where x can be of any length.</p>
<h4>Space collectors</h4>
<p>As already mentioned, variables normally don’t collect spaces. This is primarily to make certain that double spaces are eliminated in compound words. Sometimes however, it is required to store the spaces. For instance, in file paths, spaces tend to play an important role. That’s why all 3 types of variables can be expended with ‘:CollectSpaces’ (capitals not important). This will let the pattern matcher know that it needs to collect the spaces in between the words. They wont be counted in the length or range though. Ex:</p>
<blockquote><p>Copy $from:3:collectspaces to $to<br />
Copy $from:3-3:collectspaces to $to<br />
Copy $from:collectspaces to $to</p></blockquote>
<p>The first pattern will collect 3 words with all the spaces in between, the second between 3 and  6 words, all spaces in between and the last will collect any number of tokens.</p>
<h3>Thesaurus variables</h3>
<p>A thesaurus variable is a named memory locations that stores the input which was found and which is a child of the thesaurus node specified in the thesaurus variable. The thesaurus node is identified through a path. By default, a path is always followed using the ‘is a’ relationship, but this can be overwritten as the first path item after the name of the variable.  Next in the path is always the part of speech value. This can be: noun, verb, adverb (adv), adjective (adj), pronoun (pron), article (art), compelementizer (comp), conjunction (conj), , interjection (inter), preposition (prep), number, integer (int), double and any. The last one is a catch-all that covers all types of pos values. And after the pos, you can optionally declare a series of thesaurus entries that further specify the path. This doesn’t have to start at the root of the thesaurus, as long as enough values are specified to find a single and unique item.</p>
<p>The EBNF for thesaurus variables is defined as:</p>
<blockquote><p>ThesVariable = &#8216;^&#8217;identifier ['-&gt;' relationship ] &#8216;:&#8217; pos-type { PathItem };<br />
PathItem = &#8216;.&#8217; ( identifier | &#8216;(&#8216; identifier &#8216;)&#8217; );</p></blockquote>
<p>Note that path items can be put between brackets. This is for thesaurus entries that consist out of multiple words. This is required cause otherwise the parser thinks that the thesaurus path has come to an end and it will see the next word as a static, which we can avoid by using brackets.</p>
<p>some examples</p>
<blockquote><p>^input:noun.name</p>
<p>^input:adjective.(age related)</p>
<p>^input-&gt;similar:adj.absolute</p></blockquote>
<p>Thesaurus variables have a bigger impotence compared to regular variables, both are less than statics. A thesaurus variable comes in at about half the weight of a static while a regular value weights only 1/100th of a static.</p>
<h3>operators</h3>
<p>Operators are used to control the flow of the pattern matching process in some way.</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="85"><strong><span style="text-decoration: underline;">Name</span></strong></td>
<td valign="top" width="49"><strong><span style="text-decoration: underline;">Symbol</span></strong></td>
<td valign="top" width="814"><strong><span style="text-decoration: underline;">Description</span></strong></td>
</tr>
<tr>
<td valign="top" width="85">Loop</td>
<td valign="top" width="49">{}</td>
<td valign="top" width="814">With the loop operator, you can declare a section that can occur 0, 1 or more times.</td>
</tr>
<tr>
<td valign="top" width="85">Option</td>
<td valign="top" width="49">[]</td>
<td valign="top" width="814">The content between an option can occur 0 or 1 times.</td>
</tr>
<tr>
<td valign="top" width="85">Group</td>
<td valign="top" width="49">()</td>
<td valign="top" width="814">Are used to group items together. Usually used in conjunction with 1 or more conditionals.</td>
</tr>
<tr>
<td valign="top" width="85">Conditional</td>
<td valign="top" width="49">|</td>
<td valign="top" width="814">Forces a choice between the items on the left and right side of the line. Normally used inside an option, loop or group.</td>
</tr>
<tr>
<td valign="top" width="85">And</td>
<td valign="top" width="49">&amp;&amp;</td>
<td valign="top" width="814">Allows for wholes in the pattern: the items on the left and right side of &amp;&amp; don’t need to be next to each other in the input</td>
</tr>
<tr>
<td valign="top" width="85">Start of input</td>
<td valign="top" width="49">|&lt;</td>
<td valign="top" width="814">Indicates that the pattern can only match if it is at the start of the input.</td>
</tr>
<tr>
<td valign="top" width="85">End of input</td>
<td valign="top" width="49">&gt;|</td>
<td valign="top" width="814">Indicates that the pattern can only match when it is at the end of the input.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Some examples:</p>
<blockquote><p>a {b | c}  //matches: a | x a | a b| a b c | a b b | a b c b c b |…</p>
<p>a (b | c)  //matches a b | a c | x x x a b</p>
<p>a [b | c]  //matches a | a b | a c</p>
<p>a &amp;&amp; b     //matches a b | a xxx b | a x x b |…</p>
<p>|&lt; a b     //matches a b xxx   but not: xxx a b</p>
<p>a b &gt;|     //matches xxx a b   but not: a b xxx</p></blockquote>
<p>Most combinations of operators and variables are allowed except that regular variables (that don’t have a single length value), can’t be the first item of an option or loop. This includes any conditionals inside an option or loop: they also can’t be followed by a regular or ranged variable. That is because it is impossible to determine this way which path to follow: a regular variable can collect any kind of text. This problem does not exist with thesaurus variables.</p>
<h3>Sub topics and rules</h3>
<p>It is possible to reference other topics and rules within a pattern. This means that any of the patterns defined in the topic or rule can be found at that location. It is also legal for a pattern to reference it’s own rule or topic, which creates recursion. This is a very powerful feature, but also dangerous. If not used carefully, you can get into loops that don’t exit.</p>
<p>The EBNF for sub topics and rules:</p>
<blockquote><p>Sub =  &#8216;~&#8217; TopicName ['.' RuleName]</p>
<p>TopicName = RuleName = identifier | ‘(‘ identifier {identifier}  ‘)’</p></blockquote>
<p>ex:</p>
<blockquote><p>~subject                 //references one of the standard topics</p>
<p>~numbers.Add             //references the add rule within the numbers topic</p>
<p>~(hell world)            //a topic who’s name contains multiple words</p></blockquote>
<p>Because topics and rules are referenced by their name inside the patterns, each topic and every rule within each topic needs to have a unique name. The editor will verify this, but not enforce it. When you use a duplicate name for a topic, the icon will be red, duplicate rule names will produce errors in the log.</p>
]]></content:encoded>
			<wfw:commentRss>http://bragisoft.com/2012/04/input-patterns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Waiting for a profiler</title>
		<link>http://bragisoft.com/2012/03/waiting-for-a-profiler/</link>
		<comments>http://bragisoft.com/2012/03/waiting-for-a-profiler/#comments</comments>
		<pubDate>Sat, 03 Mar 2012 09:52:54 +0000</pubDate>
		<dc:creator>bragi</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[I’ve been waiting to release the android version until I got a change to profile the application cause there is a clear bottle-neck going on in the engine. Unfortunately, the performance profiler isn’t ready yet, but being built. I have a few ideas of where the problem might be, but there is no guarantee, so [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been waiting to release the android version until I got a change to profile the application cause there is a clear bottle-neck going on in the engine. Unfortunately, the performance profiler <a href="http://stackoverflow.com/questions/8953134/method-profiler-for-mono-for-android" target="_blank">isn’t ready yet, but being built</a>. I have a few ideas of where the problem might be, but there is no guarantee, so better wait until the tool is available.</p>
<p>In the mean time though, I think I’ll prepare a simple release, which will run pretty slow.</p>
]]></content:encoded>
			<wfw:commentRss>http://bragisoft.com/2012/03/waiting-for-a-profiler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About resonating neural networks</title>
		<link>http://bragisoft.com/2012/01/about-resonating-neural-networks/</link>
		<comments>http://bragisoft.com/2012/01/about-resonating-neural-networks/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 18:56:20 +0000</pubDate>
		<dc:creator>bragi</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bragisoft.com/?p=319</guid>
		<description><![CDATA[An intro on the core concepts.]]></description>
			<content:encoded><![CDATA[<p>The concepts behind resonating neural networks can probably best be explained by means of the same mental exercise that I used for working out the core ideas. Basically, we are going to try and follow the journey that a single electrical impulse takes from start to end and translate this into a model.<br />
Now, there are many possible starts: a single hair can move inside your inner ear, a taste cell can be activated, a ray of light can hit a cell on your retina and fire an electrical impulse, and so on. For this exercise, we are going to use the last one: the journey of a single visual impulse.</p>
<h1>The process</h1>
<p>So, once the cell on the retina did it&#8217;s work and the electrical impulse is activated, it travels along a nerve to the brain. From there, that single impulse will most likely activate 1 or more other neurons. These in turn will activate yet another part of the brain and so on and so on. Sometimes the activity can return to the same neurons, causing loop backs. Most likely, this activity somehow finally gets less and less until it dies out (although maybe not completely).</p>
<h1>The model</h1>
<p>Now, from this simple  process, lets try and create a model that roughly mimics it. So lets pick up some points of interest from the previous description:</p>
<ul>
<li>the electrical impulse somehow divides itself over multiple path ways.</li>
<li>some of these paths die out, others grow.</li>
<li>there are loop backs</li>
<li>an electrical signal has a direction: it goes from one point to (an)other(s).</li>
<li>an electrical signal travels along a path (axons)</li>
<li>paths connect neural cells</li>
</ul>
<p>The first thing to notice: something must be happening to the signal cause it is changing. Now, here is where I put down a rule: whatever it is that&#8217;s causing these changes, it must either be another neural cell or a pathway (axon), nothing else allowed.</p>
<p>And this is when the idea of resonance was born: what if there are 1 ore more neural cells reacting to the very fact that there is an electrical signal travelling along a pathway, because a cell released some sort of chemicals or some sort of interaction between the 2?  Now, suppose that there are various types of neurons, some of which can change or manipulate other parts of the neural network. These cells could be grouped together into a single cluster and react in sequence to the electrical signal, thus giving the ability to manipulate and change the very signal that caused the activity in the first place.</p>
<p>And thus we get to a programmable network.</p>
<p>A second thing to notice is the &#8216;split&#8217; behaviour. If there are more neural cells than there are nerves coming into the brain, than the only way that those other neural cells can be activated, is if somehow the electrical impulse divides itself. To mimic this, I introduced the concept of  the &#8216;split&#8217; instruction. This is a neuron that&#8217;s able to change the electrical signal itself by duplicating it and it&#8217;s current processing state. Each duplicate however, has small, predetermined variations, causing each signal&#8217;s path to grow apart.</p>
]]></content:encoded>
			<wfw:commentRss>http://bragisoft.com/2012/01/about-resonating-neural-networks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automated testing</title>
		<link>http://bragisoft.com/2011/12/automated-testing/</link>
		<comments>http://bragisoft.com/2011/12/automated-testing/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 18:51:21 +0000</pubDate>
		<dc:creator>bragi</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bragisoft.com/?p=298</guid>
		<description><![CDATA[With complex bots, re-testing every statement can quickly become a tedious task. Luckily the chatbot designer is able to automate this task for you.]]></description>
			<content:encoded><![CDATA[<p>No one likes to do repetitive tasks. Testing definitely falls into that category. Luckily, chatbots can, to a certain level, be tested automatically. This isn&#8217;t fool-proof of course, but it can safe lots of time.</p>
<p>So, the windows application provides test-cases, which are simply lists of inputs that need to be sent to the bot and for each input, a regular expression to check the response. Inputs can be stored hierarchical, so that child inputs will only be sent if the parent tested ok.</p>
<p>These test-cases are also an easy way to gather some metrics like how long it takes to process a statement and how many threads were used.</p>
]]></content:encoded>
			<wfw:commentRss>http://bragisoft.com/2011/12/automated-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data management</title>
		<link>http://bragisoft.com/2011/12/data-management/</link>
		<comments>http://bragisoft.com/2011/12/data-management/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 18:45:35 +0000</pubDate>
		<dc:creator>bragi</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bragisoft.com/?p=294</guid>
		<description><![CDATA[With the windows application, you can manage thesauri, assets, topics, and much more, all from custom UI's. All data types can be exported and imported using xml.]]></description>
			<content:encoded><![CDATA[<p>The windows application provides various tools for managing all the different data sets used by a chatbot (or neural network in general). Furthermore, all data can be imported and exported using xml or source code. You can script out an entire project or just a part.</p>
<h1>Thesaurus</h1>
<p><a href="http://bragisoft.com/wp-content/uploads/2011/12/thesPart.jpg"><img style="margin: 0px 15px 0px 0px" class="alignleft size-full wp-image-399" title="thesPart" alt="" src="http://bragisoft.com/wp-content/uploads/2011/12/thesPart.jpg" width="270" height="252" /></a>In the chatbot designer, the thesaurus data is used to express abstract knowledge/relationships between words (the plural of a word, conjugations, the opposite, &#8216;is a’ relationships,&#8230;) . The application provides extensive support for managing this type of data. You can add, delete, move around, import and export single nodes, a section or the entire thesaurus, do searches and much more. </p>
<p>To the left is a screenshot of the thesaurus. It is represented in a tree structure, filtered by pos (part of speech) and the recursive relationship (custom relationships can be added). Below the tree view is a details section for the selected node where you can specify non recursive relationships like conjugations, pos relationships and various other types.</p>
<p>Although you are able to start a new thesaurus from scratch, it is much easier to import an already existing version. There are several thesauri available in the <a href="http://bragisoft.com/download/" target="_blank">downloads</a> section like a full English <a href="http://www.ebswift.com/OpenSource/WordNetSQLServer/" target="_blank">wordnet</a> (pretty big) and a compact version currently used in the android version. </p>
<h1>Assets</h1>
<p><a href="http://bragisoft.com/wp-content/uploads/2012/04/assetEditor_part.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 6px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="assetEditor_part" border="0" alt="assetEditor_part" align="right" src="http://bragisoft.com/wp-content/uploads/2012/04/assetEditor_part_thumb.jpg" width="247" height="177" /></a>Assets are used to express concrete knowledge (as in: I have 2 sisters). Besides importing and exporting this data, the chatbot designer application also provides a custom editor for managing this type of data. This is a grid based editor with a number of fixed columns. The first 2 are the most important: attribute and value, but there are also who, what, where, when, how, why, then and amount.</p>
<p>Data is entered either by typing in the values, by drag-drop or through selection from a drop down list that provides browsing features for different types of data like the thesaurus, other assets and topics,… Date and time values can also be selected this way. The data type of each element can be represented with an icon to provide a quick overview, as shown in the image to the right.</p>
<h1>Topics</h1>
<p>Conversations are usually scripted in topics which can also be edited using an editor which is a mix of text processing and structured editors.<a href="http://bragisoft.com/wp-content/uploads/2012/04/topicEditor_part.jpg"><img style="background-image: none; border-right-width: 0px; margin: 6px auto 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="topicEditor_part" border="0" alt="topicEditor_part" src="http://bragisoft.com/wp-content/uploads/2012/04/topicEditor_part_thumb.jpg" width="496" height="120" /></a></p>
<p>The editor supports cut, copy paste of text sections, single patterns and multiple items. Inserts are also supported. It has a built-in spell checker and errors in the patterns are also highlighted (with an error description in the tooltips). All patterns are also automatically compiled (with an option to recompile all the patterns in case related parts have changed). </p>
<p>All code sections can be expanded and collapsed to make reading/editing easier. This can be done for each section individually or all together. The editor can also switch between an auto insert or regular view mode. The latter is shown in the image above. In insert mode, every section has an extra empty line at the bottom that allows you to quickly add new records.</p>
<h1>Code</h1>
<p>All of the pattern matching algorithms and function extensions are stored in the project itself and not in the application. The latter executes them with it’s interpreter. These algorithms are declared using the neural network language, a C#-like programming language. In it’s first incarnation, there was no textual representation for this language, only a graphical editor, which is still used for debugging (and also editing). There is currently no special support for working with the source files apart from an import (compilation) and export (rendering) feature. Editing can be done in any regular text-editor (syntax highlighting definitions have already been made, contact me if you’d like to have one).</p>
<p><a href="http://bragisoft.com/wp-content/uploads/2012/04/code_part.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="code_part" border="0" alt="code_part" src="http://bragisoft.com/wp-content/uploads/2012/04/code_part_thumb.jpg" width="691" height="291" /></a></p>
<h1>More</h1>
<p><a href="http://bragisoft.com/wp-content/uploads/2012/04/project_part.jpg"><img style="background-image: none; border-right-width: 0px; margin: 4px 6px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="project_part" border="0" alt="project_part" align="left" src="http://bragisoft.com/wp-content/uploads/2012/04/project_part_thumb.jpg" width="260" height="275" /></a><a href="http://bragisoft.com/wp-content/uploads/2012/04/explorer_part.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 6px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="explorer_part" border="0" alt="explorer_part" align="right" src="http://bragisoft.com/wp-content/uploads/2012/04/explorer_part_thumb.jpg" width="220" height="227" /></a>There are many more ways to manage data: </p>
<p>With project overview, you can manage all the topics, assets and other data elements contained in your project. You can add, delete, move, rename, open, export and import items from the project manager. It also provides a short-cut to easily replace topics with newer versions.</p>
<p>The neural network designer version also contains an explorer that provides a list of all the items defined in the project. It allows you to delete and open all types of neurons in the editor or inspect them using a tree that displays all the related items (outgoing and incoming links, parent and child relationships). And you can always sync the currently selected item from any part in the application, with the explorer.<img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 6px auto 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Browse_part" border="0" alt="Browse_part" src="http://bragisoft.com/wp-content/uploads/2012/04/Browse_part_thumb.jpg" width="339" height="281" /></p>
<p>The neural network designer version provides many more editors that can be used to manipulate various data structures that can be used for visual recognition, audio processing, pattern matching,&#8230;</p>
<p>Most of these editors are in constant development. New features and improvements tend to be added as needed. If you have any special requests, you can always post it in the <a title="Forum" href="http://bragisoft.com/forum/">forum section</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bragisoft.com/2011/12/data-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: bragisoft.com @ 2012-05-20 03:34:25 -->
