public static Task <double[, ]> VectorizeDocumentsTFIDF(IEnumerable <string> documents) { return(Task.Run(() => { try { using (Py.GIL()) { dynamic sklear_feature_extraction_text = Py.Import("sklearn.feature_extraction.text"); dynamic tfidfVectorizer = sklear_feature_extraction_text.TfidfVectorizer(); dynamic countMatrixObject = tfidfVectorizer.fit_transform(documents); PyList countMatrix = PyList.AsList(countMatrixObject.toarray()); var matrix = (double[][])countMatrix.AsManagedObject(typeof(double[][])); return ConvertMatrix(matrix); } } catch (PythonException e) { if (e.Message.Contains("NoneType")) { return new double[0, 0]; } else { throw e; } } })); }
public void TestListAsListType() { var l = new PyList(); PyList t = PyList.AsList(l); Assert.IsNotNull(t); Assert.IsInstanceOf(typeof(PyList), t); }
private PyList GetSysPaths() { // set sys paths PyObject sys = PythonEngine.ImportModule("sys"); PyObject sysPathsObj = sys.GetAttr("path"); return(PyList.AsList(sysPathsObj)); }
public void TestStringAsListType() { var i = new PyInt(5); PyList t = null; var ex = Assert.Throws <PythonException>(() => t = PyList.AsList(i)); Assert.AreEqual("'int' object is not iterable", ex.Message); Assert.IsNull(t); }
private static double[,] ConvertSimilarityPythonListToArray(PyList similarityList) { var length = similarityList.Length(); var similarities = new double[length, length]; for (int i = 0; i < length; i++) { var columnRows = PyList.AsList(similarityList[i]); var row = (double[])columnRows.AsManagedObject(typeof(double[])); for (int j = 0; j < length; j++) { similarities[i, j] = row[j]; } } return(similarities); }
public bool TryDecode <T>(PyObject pyObj, out T value) { if (!PyIter.IsIterable(pyObj)) { value = default; return(false); } using (var pyList = PyList.AsList(pyObj)) { if (typeof(T).IsGenericType) { value = pyList.ToList <T>(); } else { value = (T)pyList.ToList(); } return(true); } }
public static Task <double[, ]> FindSimilarities(string stringifiedMatrix) { return(Task.Run(() => { using (Py.GIL()) { dynamic pairwise = Py.Import("sklearn.metrics.pairwise"); dynamic cosine_similarity = pairwise.cosine_similarity; dynamic np = Py.Import("numpy"); dynamic matrix = np.array(np.mat(stringifiedMatrix)); PyDict locals = new PyDict(); locals.SetItem("X", matrix); locals.SetItem("cosine_similarity", cosine_similarity); dynamic cosineSimilarityObj = PythonEngine.Eval("cosine_similarity(X, X)", null, locals.Handle); PyList cosineSimilarity = PyList.AsList(cosineSimilarityObj); return ConvertSimilarityPythonListToArray(cosineSimilarity); } })); }