Merge pull request #191 from bobloy/chatter_fox

Use Bobloy's chatterbot for Chatter
This commit is contained in:
bobloy 2021-07-06 10:10:09 -04:00 committed by GitHub
commit 2a18760a83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 30 additions and 84 deletions

View File

@ -74,12 +74,18 @@ If you get an error at this step, stop and skip to one of the manual methods bel
#### Step 2: Install additional dependencies
Assuming the previous commands had no error, you can now use `pipinstall` to add the remaining dependencies.
Here you need to decide which training models you want to have available to you.
NOTE: This method is not the intended use case for `pipinstall` and may stop working in the future.
Shutdown the bot and run any number of these in the console:
```
[p]pipinstall --no-deps chatterbot>=1.1
python -m spacy download en_core_web_sm # ~15 MB
python -m spacy download en_core_web_md # ~50 MB
python -m spacy download en_core_web_lg # ~750 MB (CPU Optimized)
python -m spacy download en_core_web_trf # ~500 MB (GPU Optimized)
```
#### Step 3: Load the cog and get started
@ -89,62 +95,14 @@ NOTE: This method is not the intended use case for `pipinstall` and may stop wor
```
### Windows - Manually
#### Step 1: Built-in Downloader
You need to get a copy of the requirements.txt provided with chatter, I recommend this method.
```
[p]repo add Fox https://github.com/bobloy/Fox-V3
```
#### Step 2: Install Requirements
Make sure you have your virtual environment that you installed Red on activated before starting this step. See the Red Docs for details on how.
In a terminal running as an admin, navigate to the directory containing this repo.
I've used my install directory as an example.
```
cd C:\Users\Bobloy\AppData\Local\Red-DiscordBot\Red-DiscordBot\data\bobbot\cogs\RepoManager\repos\Fox\chatter
pip install -r requirements.txt
pip install --no-deps "chatterbot>=1.1"
```
#### Step 3: Load Chatter
```
[p]repo add Fox https://github.com/bobloy/Fox-V3 # If you didn't already do this in step 1
[p]cog install Fox chatter
[p]load chatter
```
Deprecated
### Linux - Manually
#### Step 1: Built-in Downloader
```
[p]repo add Fox https://github.com/bobloy/Fox-V3
[p]cog install Fox chatter
```
#### Step 2: Install Requirements
In your console with your virtual environment activated:
```
pip install --no-deps "chatterbot>=1.1"
```
### Step 3: Load Chatter
```
[p]load chatter
```
Deprecated
# Configuration
Chatter works out the the box without any training by learning as it goes,
Chatter works out the box without any training by learning as it goes,
but will have very poor and repetitive responses at first.
Initial training is recommended to speed up its learning.

View File

@ -29,6 +29,12 @@ def my_local_get_prefix(prefixes, content):
return None
class ENG_TRF:
ISO_639_1 = "en_core_web_trf"
ISO_639 = "eng"
ENGLISH_NAME = "English"
class ENG_LG:
ISO_639_1 = "en_core_web_lg"
ISO_639 = "eng"
@ -57,7 +63,7 @@ class Chatter(Cog):
self.bot = bot
self.config = Config.get_conf(self, identifier=6710497116116101114)
default_global = {"learning": True}
default_guild = {
self.default_guild = {
"whitelist": None,
"days": 1,
"convo_delta": 15,
@ -70,7 +76,7 @@ class Chatter(Cog):
# TODO: Move training_model and similarity_algo to config
# TODO: Add an option to see current settings
self.tagger_language = ENG_MD
self.tagger_language = ENG_SM
self.similarity_algo = SpacySimilarity
self.similarity_threshold = 0.90
self.chatbot = self._create_chatbot()
@ -79,7 +85,7 @@ class Chatter(Cog):
# self.trainer = ListTrainer(self.chatbot)
self.config.register_global(**default_global)
self.config.register_guild(**default_guild)
self.config.register_guild(**self.default_guild)
self.loop = asyncio.get_event_loop()
@ -365,11 +371,12 @@ class Chatter(Cog):
0: Small
1: Medium
2: Large (Requires additional setup)
3. Accurate (Requires additional setup)
"""
models = [ENG_SM, ENG_MD, ENG_LG]
models = [ENG_SM, ENG_MD, ENG_LG, ENG_TRF]
if model_number < 0 or model_number > 2:
if model_number < 0 or model_number > 3:
await ctx.send_help()
return
@ -705,7 +712,9 @@ class Chatter(Cog):
)
replying = None
if self._guild_cache[guild.id]["reply"]:
if (
"reply" not in self._guild_cache[guild.id] and self.default_guild["reply"]
) or self._guild_cache[guild.id]["reply"]:
if message != ctx.channel.last_message:
replying = message

View File

@ -7,17 +7,8 @@
"hidden": false,
"install_msg": "Thank you for installing Chatter! Please make sure you check the install instructions at https://github.com/bobloy/Fox-V3/blob/master/chatter/README.md\nAfter that, get started ith `[p]load chatter` and `[p]help Chatter`",
"requirements": [
"git+git://github.com/gunthercox/chatterbot-corpus@master#egg=chatterbot_corpus",
"mathparse>=0.1,<0.2",
"nltk>=3.2,<4.0",
"pint>=0.8.1",
"python-dateutil>=2.8,<2.9",
"pyyaml>=5.3,<5.4",
"sqlalchemy>=1.3,<1.4",
"pytz",
"https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.3.1/en_core_web_sm-2.3.1.tar.gz#egg=en_core_web_sm",
"https://github.com/explosion/spacy-models/releases/download/en_core_web_md-2.3.1/en_core_web_md-2.3.1.tar.gz#egg=en_core_web_md",
"spacy>=2.3,<2.4",
"git+git://github.com/bobloy/ChatterBot@fox#egg=ChatterBot",
"en_core_web_sm",
"kaggle"
],
"short": "Local Chatbot run on machine learning",

View File

@ -1,12 +0,0 @@
git+git://github.com/gunthercox/chatterbot-corpus@master#egg=chatterbot_corpus
mathparse>=0.1,<0.2
nltk>=3.2,<4.0
pint>=0.8.1
python-dateutil>=2.8,<2.9
# pyyaml>=5.3,<5.4
sqlalchemy>=1.3,<1.4
pytz
spacy>=2.3,<2.4
https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.3.1/en_core_web_sm-2.3.1.tar.gz#egg=en_core_web_sm
https://github.com/explosion/spacy-models/releases/download/en_core_web_md-2.3.1/en_core_web_md-2.3.1.tar.gz#egg=en_core_web_md
# https://github.com/explosion/spacy-models/releases/download/en_core_web_lg-2.3.1/en_core_web_lg-2.3.1.tar.gz#egg=en_core_web_lg

View File

@ -19,7 +19,7 @@ class MyDumbSQLStorageAdapter(SQLStorageAdapter):
self.database_uri = "sqlite:///db.sqlite3"
self.engine = create_engine(
self.database_uri, convert_unicode=True, connect_args={"check_same_thread": False}
self.database_uri, connect_args={"check_same_thread": False}
)
if self.database_uri.startswith("sqlite://"):