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;
                    }
                }
            }));
        }
Exemple #2
0
        public void TestListAsListType()
        {
            var    l = new PyList();
            PyList t = PyList.AsList(l);

            Assert.IsNotNull(t);
            Assert.IsInstanceOf(typeof(PyList), t);
        }
Exemple #3
0
        private PyList GetSysPaths()
        {
            // set sys paths
            PyObject sys         = PythonEngine.ImportModule("sys");
            PyObject sysPathsObj = sys.GetAttr("path");

            return(PyList.AsList(sysPathsObj));
        }
Exemple #4
0
        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);
                }
            }));
        }