我有兴趣查询Solr查询q并在返回{10,20,30,...}文档时绘制一组文档D的回忆.
目前,我正在获得完整的结果,即返回的docid列表(通过solrpy),并迭代它以查找D的排名,即从搜索结果中的D到其索引的映射.我不严格要求映射,只映射排名.
有没有办法让Solr/Lucene返回一组ID而不是完整结果的排名?
解决此问题的其他方法:
Numpyufunc有一种reduceat方法可以在数组中的连续分区上运行它们。所以不要写:
import numpy as np
a = np.array([4, 0, 6, 8, 0, 9, 8, 5, 4, 9])
split_at = [4, 5]
maxima = [max(subarray for subarray in np.split(a, split_at)]
Run Code Online (Sandbox Code Playgroud)
我可以写:
maxima = np.maximum.reduceat(a, np.hstack([0, split_at]))
Run Code Online (Sandbox Code Playgroud)
a[0:4]两者都会返回 slices 、a[4:5]、a[5:10]、being中的最大值[8, 0, 9]。
我想要一个类似的函数来执行argmax,请注意,我只希望每个分区中有一个最大索引:[3, 4, 5]使用上面的a和split_at(尽管索引 5 和 9 都获得了最后一组中的最大值),如由
np.hstack([0, split_at]) + [np.argmax(subarray) for subarray in np.split(a, split_at)]
Run Code Online (Sandbox Code Playgroud)
我将在下面发布一种可能的解决方案,但希望看到一种无需在组上创建索引即可进行矢量化的解决方案。
我正在尝试使用scikit-learn CountVectorizer来计算字符2克,忽略空格.在文档它提到的参数,analyzer其中规定
该功能是否应由单词或字符n-gram组成.选项'char_wb'仅从字边界内的文本创建字符n-gram.
但是,"char_wb"似乎不像我预期的那样工作.例如:
corpus = [
"The blue dog Blue",
"Green the green cat",
"The green mouse",
]
# CountVectorizer character 2-grams with word boundaries
vectorizer = CountVectorizer(analyzer='char_wb', ngram_range=(2, 2), min_df=1)
X = vectorizer.fit_transform(corpus)
vectorizer.get_feature_names()
[' b',
' c',
' d',
' g',
' m',
' t',
'at',
'bl',
'ca', ....
Run Code Online (Sandbox Code Playgroud)
注意像'b'这样的例子,它们包含一个空格.是什么赋予了?
我正在使用Pipelinesklearn 对文本进行分类。
在此示例中Pipeline,我有一个和一些用分类器TfidfVectorizer包装的自定义功能作为步骤,然后我拟合训练数据并进行预测:FeatureUnionPipeline
from sklearn.pipeline import FeatureUnion, Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import LinearSVC
X = ['I am a sentence', 'an example']
Y = [1, 2]
X_dev = ['another sentence']
# classifier
LinearSVC1 = LinearSVC(tol=1e-4, C = 0.10000000000000001)
pipeline = Pipeline([
('features', FeatureUnion([
('tfidf', TfidfVectorizer(ngram_range=(1, 3), max_features= 4000)),
('custom_features', CustomFeatures())])),
('clf', LinearSVC1),
])
pipeline.fit(X, Y)
y_pred = pipeline.predict(X_dev)
# etc.
Run Code Online (Sandbox Code Playgroud)
在这里我需要腌制TfidfVectorizer步骤并保留custom_features未腌制的,因为我仍然用它们做实验。这个想法是通过酸洗 tfidf 步骤来使管道更快。
Pipeline我知道我可以用来腌制整个过程joblib.dump …
python pipeline classification machine-learning scikit-learn