Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix consecutive stars #9

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

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