Skip to content

Conversation

@aaronchantrill
Copy link

@aaronchantrill aaronchantrill commented May 2, 2023

I had a problem with a with two consecutive stars in it, one for a person's first name and the second for the last name. The was returning the last name correctly, but the <thatstar/> or <thatstar index="1"/> kept coming back empty. It turned out to be that the parser was looking for a match between the next word in the pattern and the next word in the words list. When the next word was a star, it would not match.

Here is an example:

<aiml>
    <category>
        <pattern>ASK ME A QUESTION</pattern>
        <template>
            <random>
                <li>Do you listen to <random>
                    <li>Elvis Presley</li>
                    <li>Eddie Van Halen</li>
                    <li>Michael Jackson</li>
                </random> music?</li>
            </random>
        </template>
    </category>
    <category>
        <pattern>YES</pattern>
        <that>DO YOU LISTEN TO * * MUSIC</that>
        <template>I also listen to Mr. <thatstar index="2"/></template>
    </category>
    <category>
        <pattern>NO</pattern>
        <that>DO YOU LISTEN TO * * MUSIC</that>
        <template>Well <thatstar/> listens to you!</template>
    </category>
</aiml>

This fixes the issue by checking if the next word in a match is another star and, if so, then stopping after the first word.

I also took the liberty of adding Jupyter Notebook files to .gitignore so I wouldn't see mine when getting git status.

I had a problem with a <that> with two consecutive stars in it,
one for a person's first name and the second for the last name.
The <thatstar index="2"/> was returning the last name correctly,
but the <thatstar/> or <thatstar index="1"/> kept coming back
empty. It turned out to be that the parser was looking for a
match between the next word in the pattern and the next word in
the that. When the next word was a star, it would not match.

Here is an example:
<aiml>
    <category>
        <pattern>ASK ME A QUESTION</pattern>
        <template>
            <random>
                <li>Do you listen to <random>
                    <li>Elvis Presley</li>
                    <li>Eddie Van Halen</li>
                    <li>Michael Jackson</li>
                </random> music?</li>
            </random>
        </template>
    </category>
    <category>
        <pattern>YES</pattern>
        <that>DO YOU LISTEN TO * * MUSIC</that>
        <template>I also listen to Mr. <thatstar index="2"/></template>
    </category>
    <category>
        <pattern>NO</pattern>
        <that>DO YOU LISTEN TO * * MUSIC</that>
        <template>Well <thatstar/> listens to you!</template>
    </category>
</aiml>

This fixes the issue by checking if the next word in a match is
another star and, if so, then stopping after the first word.
@Hierosme
Copy link

Any chance to merge it PR ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants