Repository files navigation

Dumbbot

Introduction

Dumbbot is a website-based bot that was written for the September 2018 Codejam held by the Stevens Computer Science Club. The program is designed around the theme "parodies" in that it is a parody of Cleverbot, a chatbot that responds to user messages. I have parodied it by training a bot that also takes in user responses, and yields a response,

The bot is powered by a recurrent neural network that, given a segment of a conversation, generates the next character of the conversation. By repeating this operation, the program is capable of generating a response to a given query.

Requirements

To setup a Dumbbot server on your machine, you will require Python 3 and NodeJS. You will also need NPM and Pip for installing libraries.

Installation

First, you will need to download the Cornell Movie Dialog Corpus. Once it is downloaded, extract it to a directory of your choice. There should be some text files inside, notably movie_lines.txt and movie_lines.txt. Supposing the path to these files is /path/to/cornell (ex: movie lines is at /path/to/cornell/movie_lines.txt), we wan move on.

Once the requirements are met, you will need to do the following:

pip install keras # Keras is a deep learning API
npm install # Initializes the node modules

Once this is done, you will need to generate the dataset and train the model. If you use the training program, this is all handled for you. By default, you can train the model with:

python model/train.py -d /path/to/cornell -t 5000

This will run the model for 5000 iteration. During each iteration, a number of conversations will be processed for sequential movie lines and fed to the model. The first time the model is run, it may take a while to start. This is because it will need to generate the processed data. When it is generated, the dataset will be saved in the same directory as the Cornell dataset as a pair of .pkl files that contain an encoding of the data. A file charset.txt will also be created in the current directoy, and is used to map between characters and the input embedding.

Usage

To generate text manually, one can run python model/model.py -i "Your text here". This command is invoked by the NodeJS server when a request is made.

To run the server, simply run npm start. You can also use nodemon app.js if you prefer to use nodemon.

By default, the server is hosted on port 80. This can be changed in app.js.

About

A RNN-powered context-free chatbot hosted by a NodeJS server.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Dumbbot

Introduction

Dumbbot is a website-based bot that was written for the September 2018 Codejam held by the Stevens Computer Science Club. The program is designed around the theme "parodies" in that it is a parody of Cleverbot, a chatbot that responds to user messages. I have parodied it by training a bot that also takes in user responses, and yields a response,

The bot is powered by a recurrent neural network that, given a segment of a conversation, generates the next character of the conversation. By repeating this operation, the program is capable of generating a response to a given query.

Requirements

To setup a Dumbbot server on your machine, you will require Python 3 and NodeJS. You will also need NPM and Pip for installing libraries.

Installation

First, you will need to download the Cornell Movie Dialog Corpus. Once it is downloaded, extract it to a directory of your choice. There should be some text files inside, notably movie_lines.txt and movie_lines.txt. Supposing the path to these files is /path/to/cornell (ex: movie lines is at /path/to/cornell/movie_lines.txt), we wan move on.

Once the requirements are met, you will need to do the following:

pip install keras # Keras is a deep learning API
npm install # Initializes the node modules

Once this is done, you will need to generate the dataset and train the model. If you use the training program, this is all handled for you. By default, you can train the model with:

python model/train.py -d /path/to/cornell -t 5000

This will run the model for 5000 iteration. During each iteration, a number of conversations will be processed for sequential movie lines and fed to the model. The first time the model is run, it may take a while to start. This is because it will need to generate the processed data. When it is generated, the dataset will be saved in the same directory as the Cornell dataset as a pair of .pkl files that contain an encoding of the data. A file charset.txt will also be created in the current directoy, and is used to map between characters and the input embedding.

Usage

To generate text manually, one can run python model/model.py -i "Your text here". This command is invoked by the NodeJS server when a request is made.

To run the server, simply run npm start. You can also use nodemon app.js if you prefer to use nodemon.

By default, the server is hosted on port 80. This can be changed in app.js.

About

A RNN-powered context-free chatbot hosted by a NodeJS server.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Dumbbot

Introduction

Dumbbot is a website-based bot that was written for the September 2018 Codejam held by the Stevens Computer Science Club. The program is designed around the theme "parodies" in that it is a parody of Cleverbot, a chatbot that responds to user messages. I have parodied it by training a bot that also takes in user responses, and yields a response,

The bot is powered by a recurrent neural network that, given a segment of a conversation, generates the next character of the conversation. By repeating this operation, the program is capable of generating a response to a given query.

Requirements

To setup a Dumbbot server on your machine, you will require Python 3 and NodeJS. You will also need NPM and Pip for installing libraries.

Installation

First, you will need to download the Cornell Movie Dialog Corpus. Once it is downloaded, extract it to a directory of your choice. There should be some text files inside, notably movie_lines.txt and movie_lines.txt. Supposing the path to these files is /path/to/cornell (ex: movie lines is at /path/to/cornell/movie_lines.txt), we wan move on.

Once the requirements are met, you will need to do the following:

pip install keras # Keras is a deep learning API
npm install # Initializes the node modules

Once this is done, you will need to generate the dataset and train the model. If you use the training program, this is all handled for you. By default, you can train the model with:

python model/train.py -d /path/to/cornell -t 5000

This will run the model for 5000 iteration. During each iteration, a number of conversations will be processed for sequential movie lines and fed to the model. The first time the model is run, it may take a while to start. This is because it will need to generate the processed data. When it is generated, the dataset will be saved in the same directory as the Cornell dataset as a pair of .pkl files that contain an encoding of the data. A file charset.txt will also be created in the current directoy, and is used to map between characters and the input embedding.

Usage

To generate text manually, one can run python model/model.py -i "Your text here". This command is invoked by the NodeJS server when a request is made.

To run the server, simply run npm start. You can also use nodemon app.js if you prefer to use nodemon.

By default, the server is hosted on port 80. This can be changed in app.js.

About

A RNN-powered context-free chatbot hosted by a NodeJS server.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Dumbbot

Introduction

Dumbbot is a website-based bot that was written for the September 2018 Codejam held by the Stevens Computer Science Club. The program is designed around the theme "parodies" in that it is a parody of Cleverbot, a chatbot that responds to user messages. I have parodied it by training a bot that also takes in user responses, and yields a response,

The bot is powered by a recurrent neural network that, given a segment of a conversation, generates the next character of the conversation. By repeating this operation, the program is capable of generating a response to a given query.

Requirements

To setup a Dumbbot server on your machine, you will require Python 3 and NodeJS. You will also need NPM and Pip for installing libraries.

Installation

First, you will need to download the Cornell Movie Dialog Corpus. Once it is downloaded, extract it to a directory of your choice. There should be some text files inside, notably movie_lines.txt and movie_lines.txt. Supposing the path to these files is /path/to/cornell (ex: movie lines is at /path/to/cornell/movie_lines.txt), we wan move on.

Once the requirements are met, you will need to do the following:

pip install keras # Keras is a deep learning API
npm install # Initializes the node modules

Once this is done, you will need to generate the dataset and train the model. If you use the training program, this is all handled for you. By default, you can train the model with:

python model/train.py -d /path/to/cornell -t 5000

This will run the model for 5000 iteration. During each iteration, a number of conversations will be processed for sequential movie lines and fed to the model. The first time the model is run, it may take a while to start. This is because it will need to generate the processed data. When it is generated, the dataset will be saved in the same directory as the Cornell dataset as a pair of .pkl files that contain an encoding of the data. A file charset.txt will also be created in the current directoy, and is used to map between characters and the input embedding.

Usage

To generate text manually, one can run python model/model.py -i "Your text here". This command is invoked by the NodeJS server when a request is made.

To run the server, simply run npm start. You can also use nodemon app.js if you prefer to use nodemon.

By default, the server is hosted on port 80. This can be changed in app.js.

About

A RNN-powered context-free chatbot hosted by a NodeJS server.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Dumbbot

Introduction

Dumbbot is a website-based bot that was written for the September 2018 Codejam held by the Stevens Computer Science Club. The program is designed around the theme "parodies" in that it is a parody of Cleverbot, a chatbot that responds to user messages. I have parodied it by training a bot that also takes in user responses, and yields a response,

The bot is powered by a recurrent neural network that, given a segment of a conversation, generates the next character of the conversation. By repeating this operation, the program is capable of generating a response to a given query.

Requirements

To setup a Dumbbot server on your machine, you will require Python 3 and NodeJS. You will also need NPM and Pip for installing libraries.

Installation

First, you will need to download the Cornell Movie Dialog Corpus. Once it is downloaded, extract it to a directory of your choice. There should be some text files inside, notably movie_lines.txt and movie_lines.txt. Supposing the path to these files is /path/to/cornell (ex: movie lines is at /path/to/cornell/movie_lines.txt), we wan move on.

Once the requirements are met, you will need to do the following:

pip install keras # Keras is a deep learning API
npm install # Initializes the node modules

Once this is done, you will need to generate the dataset and train the model. If you use the training program, this is all handled for you. By default, you can train the model with:

python model/train.py -d /path/to/cornell -t 5000

This will run the model for 5000 iteration. During each iteration, a number of conversations will be processed for sequential movie lines and fed to the model. The first time the model is run, it may take a while to start. This is because it will need to generate the processed data. When it is generated, the dataset will be saved in the same directory as the Cornell dataset as a pair of .pkl files that contain an encoding of the data. A file charset.txt will also be created in the current directoy, and is used to map between characters and the input embedding.

Usage

To generate text manually, one can run python model/model.py -i "Your text here". This command is invoked by the NodeJS server when a request is made.

To run the server, simply run npm start. You can also use nodemon app.js if you prefer to use nodemon.

By default, the server is hosted on port 80. This can be changed in app.js.

About

A RNN-powered context-free chatbot hosted by a NodeJS server.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Dumbbot

Introduction

Dumbbot is a website-based bot that was written for the September 2018 Codejam held by the Stevens Computer Science Club. The program is designed around the theme "parodies" in that it is a parody of Cleverbot, a chatbot that responds to user messages. I have parodied it by training a bot that also takes in user responses, and yields a response,

The bot is powered by a recurrent neural network that, given a segment of a conversation, generates the next character of the conversation. By repeating this operation, the program is capable of generating a response to a given query.

Requirements

To setup a Dumbbot server on your machine, you will require Python 3 and NodeJS. You will also need NPM and Pip for installing libraries.

Installation

First, you will need to download the Cornell Movie Dialog Corpus. Once it is downloaded, extract it to a directory of your choice. There should be some text files inside, notably movie_lines.txt and movie_lines.txt. Supposing the path to these files is /path/to/cornell (ex: movie lines is at /path/to/cornell/movie_lines.txt), we wan move on.

Once the requirements are met, you will need to do the following:

pip install keras # Keras is a deep learning API
npm install # Initializes the node modules

Once this is done, you will need to generate the dataset and train the model. If you use the training program, this is all handled for you. By default, you can train the model with:

python model/train.py -d /path/to/cornell -t 5000

This will run the model for 5000 iteration. During each iteration, a number of conversations will be processed for sequential movie lines and fed to the model. The first time the model is run, it may take a while to start. This is because it will need to generate the processed data. When it is generated, the dataset will be saved in the same directory as the Cornell dataset as a pair of .pkl files that contain an encoding of the data. A file charset.txt will also be created in the current directoy, and is used to map between characters and the input embedding.

Usage

To generate text manually, one can run python model/model.py -i "Your text here". This command is invoked by the NodeJS server when a request is made.

To run the server, simply run npm start. You can also use nodemon app.js if you prefer to use nodemon.

By default, the server is hosted on port 80. This can be changed in app.js.

About

A RNN-powered context-free chatbot hosted by a NodeJS server.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Dumbbot

Introduction

Dumbbot is a website-based bot that was written for the September 2018 Codejam held by the Stevens Computer Science Club. The program is designed around the theme "parodies" in that it is a parody of Cleverbot, a chatbot that responds to user messages. I have parodied it by training a bot that also takes in user responses, and yields a response,

The bot is powered by a recurrent neural network that, given a segment of a conversation, generates the next character of the conversation. By repeating this operation, the program is capable of generating a response to a given query.

Requirements

To setup a Dumbbot server on your machine, you will require Python 3 and NodeJS. You will also need NPM and Pip for installing libraries.

Installation

First, you will need to download the Cornell Movie Dialog Corpus. Once it is downloaded, extract it to a directory of your choice. There should be some text files inside, notably movie_lines.txt and movie_lines.txt. Supposing the path to these files is /path/to/cornell (ex: movie lines is at /path/to/cornell/movie_lines.txt), we wan move on.

Once the requirements are met, you will need to do the following:

pip install keras # Keras is a deep learning API
npm install # Initializes the node modules

Once this is done, you will need to generate the dataset and train the model. If you use the training program, this is all handled for you. By default, you can train the model with:

python model/train.py -d /path/to/cornell -t 5000

This will run the model for 5000 iteration. During each iteration, a number of conversations will be processed for sequential movie lines and fed to the model. The first time the model is run, it may take a while to start. This is because it will need to generate the processed data. When it is generated, the dataset will be saved in the same directory as the Cornell dataset as a pair of .pkl files that contain an encoding of the data. A file charset.txt will also be created in the current directoy, and is used to map between characters and the input embedding.

Usage

To generate text manually, one can run python model/model.py -i "Your text here". This command is invoked by the NodeJS server when a request is made.

To run the server, simply run npm start. You can also use nodemon app.js if you prefer to use nodemon.

By default, the server is hosted on port 80. This can be changed in app.js.

About

A RNN-powered context-free chatbot hosted by a NodeJS server.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Dumbbot

Introduction

Dumbbot is a website-based bot that was written for the September 2018 Codejam held by the Stevens Computer Science Club. The program is designed around the theme "parodies" in that it is a parody of Cleverbot, a chatbot that responds to user messages. I have parodied it by training a bot that also takes in user responses, and yields a response,

The bot is powered by a recurrent neural network that, given a segment of a conversation, generates the next character of the conversation. By repeating this operation, the program is capable of generating a response to a given query.

Requirements

To setup a Dumbbot server on your machine, you will require Python 3 and NodeJS. You will also need NPM and Pip for installing libraries.

Installation

First, you will need to download the Cornell Movie Dialog Corpus. Once it is downloaded, extract it to a directory of your choice. There should be some text files inside, notably movie_lines.txt and movie_lines.txt. Supposing the path to these files is /path/to/cornell (ex: movie lines is at /path/to/cornell/movie_lines.txt), we wan move on.

Once the requirements are met, you will need to do the following:

pip install keras # Keras is a deep learning API
npm install # Initializes the node modules

Once this is done, you will need to generate the dataset and train the model. If you use the training program, this is all handled for you. By default, you can train the model with:

python model/train.py -d /path/to/cornell -t 5000

This will run the model for 5000 iteration. During each iteration, a number of conversations will be processed for sequential movie lines and fed to the model. The first time the model is run, it may take a while to start. This is because it will need to generate the processed data. When it is generated, the dataset will be saved in the same directory as the Cornell dataset as a pair of .pkl files that contain an encoding of the data. A file charset.txt will also be created in the current directoy, and is used to map between characters and the input embedding.

Usage

To generate text manually, one can run python model/model.py -i "Your text here". This command is invoked by the NodeJS server when a request is made.

To run the server, simply run npm start. You can also use nodemon app.js if you prefer to use nodemon.

By default, the server is hosted on port 80. This can be changed in app.js.

About

A RNN-powered context-free chatbot hosted by a NodeJS server.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages