我在尝试为Python使用language-tool
包时遇到了一个问题。使用language-check
包时也会发生同样的错误。在我看来,这个问题显然与language-tool
包本身有关,因为Java本身和我的LanguageTool服务器都在运行。在
我在运行Java10的Windows10上。我还尝试了java8,它可以完全与LanguageTool一起工作。Java8以类似的方式引发了另一个错误。在
LanguageTool本身可以从命令行工作,GUI也可以工作。我也在http://localhost:8081/v2/check?language=en-US&text=my+text
的浏览器上成功地测试了LanguageTool服务器。在
除了重新安装language-tool
包之外,我还尝试用三种方式为Python启动自己的LanguageTool Java服务器。这三种方法在Python中都返回相同的错误。第一种方法是从Jupyter笔记本中运行以下代码:
import language_tool as lt
text = "This is very interesting text"
lt.correct(text, (lt.LanguageTool("en-US")).check(text))
这将返回一个非常详细的错误:
^{pr2}$第二种方法是通过命令行运行java -cp languagetool-server.jar org.languagetool.server.HTTPServer --port 8081
来启动服务器,然后在同一窗口中从python终端运行相同的代码。这将返回:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python37\lib\site-packages\language_tool\__init__.py", line 188, in __init__
self._start_server_on_free_port()
File "C:\Program Files\Python37\lib\site-packages\language_tool\__init__.py", line 323, in _start_server_on_free_port
cls._start_server()
File "C:\Program Files\Python37\lib\site-packages\language_tool\__init__.py", line 347, in _start_server
startupinfo=startupinfo
File "C:\Program Files\Python37\lib\subprocess.py", line 756, in __init__
restore_signals, start_new_session)
File "C:\Program Files\Python37\lib\subprocess.py", line 1155, in _execute_child
startupinfo)
OSError: [WinError 87] The parameter is incorrect
我尝试启动服务器的第三种方法是使用语言工具GUI并从笔记本上运行关于的代码,这将返回相同的详细输出。在
最后,我尝试了java8。在笔记本中,返回了以下错误:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
c:\program files\python37\lib\site-packages\language_tool\__init__.py in get_languages()
489 try:
--> 490 languages = cache["languages"]
491 except KeyError:
KeyError: 'languages'
During handling of the above exception, another exception occurred:
HTTPError Traceback (most recent call last)
c:\program files\python37\lib\site-packages\language_tool\__init__.py in _get_root(cls, url, data, num_tries)
309 try:
--> 310 with urlopen(url, data, cls._TIMEOUT) as f:
311 return ElementTree.parse(f).getroot()
c:\program files\python37\lib\urllib\request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context)
221 opener = _opener
--> 222 return opener.open(url, data, timeout)
223
c:\program files\python37\lib\urllib\request.py in open(self, fullurl, data, timeout)
530 meth = getattr(processor, meth_name)
--> 531 response = meth(req, response)
532
c:\program files\python37\lib\urllib\request.py in http_response(self, request, response)
640 response = self.parent.error(
--> 641 'http', request, response, code, msg, hdrs)
642
c:\program files\python37\lib\urllib\request.py in error(self, proto, *args)
568 args = (dict, 'default', 'http_error_default') + orig_args
--> 569 return self._call_chain(*args)
570
c:\program files\python37\lib\urllib\request.py in _call_chain(self, chain, kind, meth_name, *args)
502 func = getattr(handler, meth_name)
--> 503 result = func(*args)
504 if result is not None:
c:\program files\python37\lib\urllib\request.py in http_error_default(self, req, fp, code, msg, hdrs)
648 def http_error_default(self, req, fp, code, msg, hdrs):
--> 649 raise HTTPError(req.full_url, code, msg, hdrs, fp)
650
HTTPError: HTTP Error 400: Bad Request
During handling of the above exception, another exception occurred:
Error Traceback (most recent call last)
<ipython-input-1-116c54f6eff2> in <module>()
1 import language_tool as lt
2 text = "This is very interesting text"
----> 3 lt.correct(text, (lt.LanguageTool("en-US")).check(text))
c:\program files\python37\lib\site-packages\language_tool\__init__.py in __init__(self, language, motherTongue)
192 except ValueError:
193 language = FAILSAFE_LANGUAGE
--> 194 self._language = LanguageTag(language)
195 self.motherTongue = motherTongue
196 self.disabled = set()
c:\program files\python37\lib\site-packages\language_tool\__init__.py in __new__(cls, tag)
409 def __new__(cls, tag):
410 # Can’t use super() here because of 3to2.
--> 411 return str.__new__(cls, cls._normalize(tag))
412
413 def __eq__(self, other):
c:\program files\python37\lib\site-packages\language_tool\__init__.py in _normalize(cls, tag)
429 if not tag:
430 raise ValueError("empty language tag")
--> 431 languages = {l.lower().replace("-", "_"): l for l in get_languages()}
432 try:
433 return languages[tag.lower().replace("-", "_")]
c:\program files\python37\lib\site-packages\language_tool\__init__.py in get_languages()
490 languages = cache["languages"]
491 except KeyError:
--> 492 languages = LanguageTool._get_languages()
493 cache["languages"] = languages
494 return languages
c:\program files\python37\lib\site-packages\language_tool\__init__.py in _get_languages(cls)
288 url = urllib.parse.urljoin(cls._url, "Languages")
289 languages = set()
--> 290 for e in cls._get_root(url, num_tries=1):
291 languages.add(e.get("abbr"))
292 languages.add(e.get("abbrWithVariant"))
c:\program files\python37\lib\site-packages\language_tool\__init__.py in _get_root(cls, url, data, num_tries)
314 cls._start_server()
315 else:
--> 316 raise Error("{}: {}".format(cls._url, e))
317
318 @classmethod
Error: http://127.0.0.1:8081: HTTP Error 400: Bad Request
我已经彻底查阅了文档,并尝试了其他一些命令,所有这些命令都返回相同的错误。在
我花了太长时间弄清楚了。任何帮助解决或故障排除将是超级,超级感谢!在
目前没有回答
相关问题 更多 >
编程相关推荐