我正在尝试使用Python中的spaCy模块进行POS标记.
这是我的相同代码
from spacy.en import English, LOCAL_DATA_DIR
import spacy.en
import os
data_dir = os.environ.get('SPACY_DATA', LOCAL_DATA_DIR)
nlp = English(parser=False, tagger=True, entity=False)
def print_fine_pos(token):
return (token.tag_)
def pos_tags(sentence):
sentence = unicode(sentence, "utf-8")
tokens = nlp(sentence)
tags = []
for tok in tokens:
tags.append((tok,print_fine_pos(tok)))
return tags
a = "we had crispy dosa"
print pos_tags(a)
Run Code Online (Sandbox Code Playgroud)
输出:
[(We , u'PRP'), (had , u'VBD'), (crispy , u'NN'), (dosa, u'NN')]
Run Code Online (Sandbox Code Playgroud)
在这里,它返回crispy作为名词而不是形容词.但是,如果我使用类似的测试句子
a="we had crispy fries"
Run Code Online (Sandbox Code Playgroud)
它认识到脆皮是一个形容词.这是输出:
[(we , u'PRP'), (had , u'VBD'), (crispy , u'JJ'), (fries, u'NNS')] …Run Code Online (Sandbox Code Playgroud) 我写了以下正则表达式来标记某些短语模式
pattern = """
P2: {<JJ>+ <RB>? <JJ>* <NN>+ <VB>* <JJ>*}
P1: {<JJ>? <NN>+ <CC>? <NN>* <VB>? <RB>* <JJ>+}
P3: {<NP1><IN><NP2>}
P4: {<NP2><IN><NP1>}
"""
Run Code Online (Sandbox Code Playgroud)
此模式将正确标记短语,例如:
a = 'The pizza was good but pasta was bad'
Run Code Online (Sandbox Code Playgroud)
并提供2个短语的所需输出:
但是,如果我的句子是这样的:
a = 'The pizza was awesome and brilliant'
Run Code Online (Sandbox Code Playgroud)
仅匹配短语:
'pizza was awesome'
Run Code Online (Sandbox Code Playgroud)
而不是所期望的:
'pizza was awesome and brilliant'
Run Code Online (Sandbox Code Playgroud)
如何在我的第二个例子中加入正则表达式模式?
我正在尝试使用chrome.extension.getBackgroundPage函数访问我的扩展程序的后台页面.
但是,我收到以下错误:
未捕获的TypeError:chrome.extension.getBackgroundPage不是函数
我打电话从我的函数bar.js文件,该文件被定义为web_accessible_resource在我manifest.json
我如何使其工作?
的manifest.json
{
"manifest_version": 2,
"name": "XPath Helper",
"version": "1.0.13",
"description": "Extract, edit, and evaluate XPath queries with ease.",
"background": {
"page": "background.html"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"css": ["content.css"],
"js": ["content.js"]
}
],
"permissions": ["http://*/", "tabs", "identity", "identity.email"],
"icons": {
"32": "static/icon32.png",
"48": "static/icon48.png",
"128": "static/icon128.png"
},
"web_accessible_resources": [
"bar.css",
"bar.html",
"bar.js"
]
}
Run Code Online (Sandbox Code Playgroud)
bar.js是一个内部脚本bar.html(不是内容脚本):
// ...
document.addEventListener('DOMContentLoaded',function(){
// previosuly chrome.extension.getBackgroundPage()
chrome.runtime.getBackgroundPage(function(page){ …Run Code Online (Sandbox Code Playgroud) 我有以下两个字符串:
var block = "//div[@class='gd-row browse-grid-row'][1]/div[@class='gd-col gu3'][1]/div"
var full = "//div[@class='gd-row browse-grid-row'][1]/div[@class='gd-col gu3'][2]/div[@class='product-unit unit-4 browse-product new-design ']/div[@class='pu-details lastUnit']/div[@class='pu-price']/div[@class='pu-border-top']/div[@class='pu-final']/span"
Run Code Online (Sandbox Code Playgroud)
我需要检查块是否是完全忽略所有索引的子串.
基本上我想忽略表单的所有模式:
'[数]'
检查子字符串时.我如何在JavaScript中执行此操作?
我想计算选项集合中某个值出现的次数。
let v = vec![Some(1), Some(1), Some(3), None];
v.iter()
.filter(|Some(x)| x == &1)
.count();
Run Code Online (Sandbox Code Playgroud)
这样做会refutable pattern not covered产生有意义的错误。
我通过这样做解决了
v.iter()
.filter(|x| x.is_some() && x.unwrap() == &1)
.count()
Run Code Online (Sandbox Code Playgroud)
锈蚀的惯用方式是什么?
我有一份菜品清单和一句话。
我想检查句子中是否存在菜肴。但是,如果我做一个正常的
if dish in sentence:
Run Code Online (Sandbox Code Playgroud)
我基本上会得到一个子字符串匹配。我的问题是说我有一个
dish='puri'
sentence='the mutton shikampuri was good'
Run Code Online (Sandbox Code Playgroud)
上面的代码仍然将 puri 与 shikampuri 匹配,这是我不想要的。
如果我尝试标记该句子,我将无法匹配诸如菜肴='puri bhaji'之类的菜肴
有什么方法可以忽略不以我的菜肴字符串开头的匹配项吗?基本上,当我的菜是“puri”时,我想忽略“shikampuri”之类的模式。
如何使用单个完整停止替换多个句点,以便NLTK句子标记器可以将它们区分为2个不同的句子
例如
a = "the food was good...what about the bread huh..Awesome"
Run Code Online (Sandbox Code Playgroud)
如果我使用
nltk.sent_tokenize(a)
它给了我
['the food was good...what about the bread huh..Awesome']
Run Code Online (Sandbox Code Playgroud)
但我想要的是
['the food was good.', 'what about the bread huh.', 'Awesome']
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
我想从字符串中删除所有数值但仅当字符串包含至少一个字母时.
我怎样才能在JavaScript中执行此操作?
例如
var s = "asd23asd"
Run Code Online (Sandbox Code Playgroud)
那么结果必须是asdasd
但是如果
var s = "123123"
Run Code Online (Sandbox Code Playgroud)
然后结果必须是123123,因为字符串没有任何字母.
我正在尝试移植一个使用msgpack将JavaScript对象编码为Rust 的JavaScript 库。我找到了一个用于msgpack编码/解码的Rust库,但是我没有得到Rust中的等效输入格式。
这个用于编码对象的JavaScript代码{"a": 5, "b": 6}
给出了输出82 a1 61 03 a1 62 05:
const msgpack = require("msgpack-lite");
msgpack.encode(obj);
Run Code Online (Sandbox Code Playgroud)
我尝试将对象表示为Rust结构并使用rmp-serde库对其进行编码
use rmp_serde::{Deserializer, Serializer};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct Test {
a: u32,
b: u32,
}
fn main() {
let mut buf = Vec::new();
let val = Test { a: 3, b: 5 };
val.serialize(&mut Serializer::new(&mut buf)).unwrap();
println!("{:?}", buf);
}
Run Code Online (Sandbox Code Playgroud)
我得到了输出[146, 3, 5]。如何在Rust中表示JSON输入?