kengz / spacy-nlp Goto Github PK
View Code? Open in Web Editor NEWExpose Spacy nlp text parsing to Nodejs (and other languages) via socketIO
License: MIT License
Expose Spacy nlp text parsing to Nodejs (and other languages) via socketIO
License: MIT License
Hi there,
It's really great to be able to use the Spacy.io parser with Node.js thanks to these modules. But it seems adversely to affect the error handling of my own code.
I have a server script that communicates, via socket.io, with a client written in React.js. The server script, server.js, passes text to a parser dependent on spacy-nlp, which I've implemented like so:
nlp_server.js:
const spacyNLP = require('spacy-nlp')
var serverPromise = spacyNLP.server({ port: process.env.IOPORT })
.catch(err => console.error(err));
parser.js:
const spacyNLP = require('spacy-nlp');
const nlp = spacyNLP.nlp;
And in server.js, I make calls to parser.js, e.g.:
const parser = require('./parser.js'); parser.parse(text).then(result => console.log(result)).catch(error => console.error(error));
The server.js script uses a socket.io connection to the client on a completely different port, and I think I've got error handlers everywhere I should that pipe errors to the console. But when using spacy-nlp, various errors in my code fail to bubble up with the full stack trace:
When I replace the nlp dependency in server.js with a dummy object, error logging to the console is verbose as usual.
It may be that I'm overlooking something obvious, so please pardon my ignorance if that's the case.
Thanks!
I'm getting the following error upon installation and startup:
File "/Users/colinarmstrong/src/memoryvue2/node_modules/spacy-nlp/src/client.py", line 13, in <module
from socketIO_client_nexus import SocketIO, WebsocketTransport
ModuleNotFoundError: No module named 'socketIO_client_nexus'
Changing socketIO_client_nexus
to socketIO_client
fixes this.
Due to another side project I am no longer able to manage the Github issues and feature requests here. Hence, spacy-nlp is looking for a new maintainer.
Currently there are 3 crucial issues with help needed:
Anyone who fixes some of these issues may be considered as a new maintainer for spacy-nlp, if they wish so. Thank you in advance.
// Loading spacy may take up to 15s
Can I determine whether spacy has finished loading?
How do I tell spacy-nlp to load the german model without forking spacy-nlp and changing the imports?
Followed your instructions and when I node index.js
launch the index.js
file with
const spacyNLP = require("spacy-nlp");
// default port 6466
// start the server with the python client that exposes spacyIO (or use an existing socketIO server at IOPORT)
var serverPromise = spacyNLP.server({ port: process.env.IOPORT });
// Loading spacy may take up to 15s
I get the following error:
[Fri Jun 05 2020 13:50:21 GMT+0200 (Central European Summer Time)] ERROR Traceback (most recent call last):
File "/Users/deemeetree/Documents/Root/spacyorig/node_modules/spacy-nlp/src/client.py", line 12, in <module>
import websocket
ModuleNotFoundError: No module named 'websocket'
Even though websocket was installed on my system.
Why is that?
ERROR spawn /bin/sh ENOENT Error: spawn /bin/sh ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
at onErrorNT (internal/child_process.js:456:16)
at processTicksAndRejections (internal/process/task_queues.js:81:21)
Greetings,
I am having a great deal of trouble getting started with spacy-nlp.
I keep getting the following message:
"node_modules/spacy-nlp/src/client.py", line 10, in
[Fri Jun 22 2018 22:20:42 GMT-0700 (PDT)] ERROR import six
ImportError: No module named six"
I have installed, uninstalled and reinstalled six using pip, but still no dice.
I wonder if the error could be connected to the fact that my computer (mac os x) came with Python on it, so when I installed Python 3.6 I have had to specify it specifically since there are two versions on the same computer.
For instance "Python3.6 -m pip install six"
I notice it says...
INFO Starting socketIO client for python at 6466
When I run "node spacyserver.js". Do I need to specify to use version 3 somewhere? How would I do that?
Thanks so much! I'm at my wit's end trying to get an NLP to function on my computer.
I am using trying to use [email protected] on node v4.2.6 on Ubuntu (16.04).
In the node shell, > const spacyNLP = require("spacy-nlp");
generates the following error:
/home/dd/node_modules/spacy-nlp/src/start-io.js:3
const { spawn } = require('child_process')
^
SyntaxError: Unexpected token {
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:374:25)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/home/adarsh/node_modules/spacy-nlp/index.js:2:16)
at Module._compile (module.js:410:26)
at Object.Module._extensions..js (module.js:417:10)
After installing below dependencies, when i start the server with node. Error is displayed on console. unable to start the spacy server.
python3 -m pip install -U socketIO-client-nexus
python3 -m pip install -U spacy==2.1.3
python3 -m spacy download en_core_web_md
npm i --save spacy-nlp
Contents in JS file -
const spacyNLP = require("spacy-nlp")
// default port 6466
// start the server with the python client that exposes spacyIO (or use an existing socketIO server at IOPORT)
var serverPromise = spacyNLP.server({ port: process.env.IOPORT });
// Loading spacy may take up to 15s
Environment - Cent os 7, Amazon Ec2 instance.
Kindly help.
I was getting the error on Ubuntu 17.10:
ERROR Traceback (most recent call last):
File "/home/xxx/.local/lib/python3.6/site-packages/socketIO_client/init.py", line 76, in _get_engineIO_session
transport.recv_packet())
(STDERR) StopIteration
To fix this, I had to remove the socketIO-client and import socketIO-client-nexus for it to work. It seems this was the cause:
socketIO-client
https://travis-ci.org/invisibleroads/socketIO-client
The library doesn't support socket.io protocol version 2.0
Hopefully this helps another that comes across this issue.
Trying to use this module on windows 10 but have not had any luck. I am using python v 3.6 and spaCy v 1.8.1.
When I try to create the server connection I get the following error.
[Mon Nov 13 2017 17:39:17 GMT+0000 (GMT Standard Time)] ERROR
[Mon Nov 13 2017 17:39:17 GMT+0000 (GMT Standard Time)] ERROR
Does this module support windows 10?
Background:
SIGTERM handling is required for graceful shutdown of node based micro service while running on Kubernetes. An example for SIGTERM graceful handling by node project would the following code (can be tested by sending "kill -15 pid" to the node process id).
process.on('SIGTERM', () => {
console.log('Just Received SIGTERM.');
});
Issue:
When a node project is dependant upon spacy-nlp packge then even if the above code is included in the node project, sending "kill -15 pid" to node process id results in error "INFO Exit: killed ioClient.js children" and node process exits without graceful shutdown.
Hello kengz,
Great work with the modules.
I am facing an error while following the steps in tutorial.
package json :
{ "name": "nlp-app", "version": "1.0.0", "description": "Sample app", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Test", "license": "ISC", "dependencies": { "poly-socketio": "1.1.4", "spacy-nlp": "^1.0.7" } }
Hi @kengz , thank you for creating this NodeJS module for Spacy!
Can you please let me know how I can use the serverPromise object to know when Spacy has been loaded?
Currently I just timeout for 15s and then use the spacy-nlp.nlp object.
const spacyNLP = require('spacy-nlp')
var serverPromise = spacyNLP.server({ port: process.env.IOPORT })
serverPromise.then(function(){
// This runs before the INFO All 1 IO clients have joined msg
const nlp = spacyNLP.nlp
})
Thanks in advance!
try {
nlp.parse('Bob Brought the pizza to Alice.').then(function(output) {
console.log(output);
// console.log(JSON.stringify(output[0].parse_tree, null, 2));
// res.send(JSON.stringify(output[0].parse_tree, null, 2));
});
}catch (e) {
console.log("error");
console.log(e);
}
output is null.
Please let me know. I followed the tutorial and was able to start the server just fine.
Hi,
Trying to install on my macbook pro (mac osx 10.13.4). After installing socketIO-client and updating spacy to version 2.0.11, npm install gives error Cannot read property '0' of undefined.
The last few lines in the log show:
3812 verbose stack TypeError: Cannot read property '0' of undefined
3812 verbose stack at rmStuff (/usr/local/lib/node_modules/npm/lib/unbuild.js:61:24)
3812 verbose stack at tryCatcher (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/util.js:16:23)
3812 verbose stack at ret (eval at makeNodePromisifiedEval (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promisify.js:184:12), :13:39)
3812 verbose stack at lifecycle.then.then (/usr/local/lib/node_modules/npm/lib/install/action/unbuild.js:12:12)
3812 verbose stack at tryCatcher (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/util.js:16:23)
3812 verbose stack at Promise._settlePromiseFromHandler (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:512:31)
3812 verbose stack at Promise._settlePromise (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:569:18)
3812 verbose stack at Promise._settlePromise0 (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:614:10)
3812 verbose stack at Promise._settlePromises (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:693:18)
3812 verbose stack at Promise._fulfill (/usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:638:18)
3812 verbose stack at /usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/nodeback.js:42:21
3812 verbose stack at
$ python -V
Python 3.6.4 :: Anaconda custom (64-bit)
$ npm --version
5.8.0
I hope to see a fix - this would be a useful piece of my application.
Colin Goldberg
spacy-nlp-debug.log
Hello! I've tried a few different ways (python3, python2, uninstalling/reinstalling everything), but always get the following error when I run a quick test.
Test code:
var spacyNLP = require('spacy-nlp');
var serverPromise = spacyNLP.server({ port: process.env.IOPORT })
Any ideas? Thank you!
[Sun Dec 04 2016 21:52:11 GMT-0500 (EST)] INFO Starting poly-socketio server on port: 6466, expecting 1 IO clients
[Sun Dec 04 2016 21:52:11 GMT-0500 (EST)] INFO Starting socketIO client for python at 6466
[Sun Dec 04 2016 21:52:11 GMT-0500 (EST)] ERROR An incompatible websocket library is conflicting with the one we need.
You can remove the incompatible library and install the correct one
by running the following commands:
yes | pip uninstall websocket websocket-client
pip install -U websocket-client
Please help me with AttributeError: module 'py' has no attribute 'path'
File ".../node_modules/spacy-nlp/src/client.py", line 14, in
from py import nlp
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.