【问题标题】:How to do Text classification using tensorflow?如何使用 tensorflow 进行文本分类?
【发布时间】:2020-03-10 09:30:34
【问题描述】:

我是 TensorFlow 和机器学习的新手。我在编写一个 tensorflow 代码时遇到了问题,该代码执行的文本分类类似于我尝试使用 sklearn 库的一个。我在矢量化数据集和向 tensorflow 层提供输入方面面临重大问题。

我确实记得在一次对标签进行热编码时成功,但前面的 tensorflow 层不接受创建的数组。 请注意,我已经阅读了大多数关于 stackoverflow 的文本分类回答问题,但它们过于具体或需要解决复杂的问题。 我的问题案例太窄,需要非常基本的解决方案。

如果有人能告诉我类似于我的 sklearn 机器学习算法的步骤或 tensorflow 代码,那将是非常有帮助的。

使用的数据集位于:https://www.kaggle.com/virajgala/classifying-text


from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.linear_model import SGDClassifier
from sklearn.pipeline import Pipeline

#Reading the csv dataset
df = pd.read_csv(('/Classifyimg_text.csv'), index_col=False).sample(frac=1)

#Splitting the dataset
train_data, test_data, train_labels, test_labels = train_test_split(df['sentence'], df['label'], test_size=0.2)

#Vectorization and Classification 
streamline = Pipeline([('vect', TfidfVectorizer(max_features=int(1e8))),
                           ('clf', SGDClassifier())]).fit(train_data, train_labels)

#Prediction
Output = streamline.predict(["This is my action to classify the text."])

【问题讨论】:

    标签: python tensorflow machine-learning scikit-learn text-classification


    【解决方案1】:

    如果您想获得开创性的分数,我宁愿使用一些嵌入器。自然语言是相当超维的。现在有很多预训练的架构。因此,您只需将文本编码到潜在空间,然后在这些特征上训练您的模型。一旦有了数字特征向量,应用重采样技术也容易得多。

    我自己,我主要使用 Facebook 的 LASER embedder。阅读更多关于它的信息here。有非官方的pypi 包,它工作得很好。此外,您的模型可以开箱即用地处理数十种语言,这非常可爱。

    还有来自 Google 的 BERT,但是预训练的模型相当简单,所以你必须先把它推得更远。

    【讨论】:

    • 感谢@Piotr Rarus 的回复。我记得以前尝试过 spaCy,效果很好。目前我希望完全使用 tensorflow 模块来编写代码,并尽量避免使用任何其他 python 库。如果您找到解决我的特定问题的方法,请告诉我。
    • 避免使用其他库有什么特别的原因吗?为多种语言训练和构建嵌入器并非易事。我宁愿从已经有效的开始。你总是需要一些东西来比较。另外,research 和 prod 是两个独立的存储库,所以我不会担心依赖关系。
    【解决方案2】:

    这个问题有点宽泛。或许你可以看看张贴在 Tensorflow 网站上的the tutorial 进行二进制文本分类(正负)并尝试实现它。在此过程中,如果您遇到任何需要进一步解释的问题或概念,请搜索 StackOverflow 以查看是否有人提出了与您类似的问题。如果没有,请花时间在these guidelines 后面写一个问题,这样有能力回答的人就可以获得他们需要的所有信息。我希望这些信息能让您有一个良好的开端,欢迎来到 Stack Overflow!

    【讨论】:

    • 谢谢@nathan。是的,我之前看过 IMDB 电影评论文本分类,但标签数据集已经是二进制的,然后嵌入以使用 tensorflow 层进行进一步处理。在我的情况下,标签是需要矢量化的文本,这就是我正在努力的领域。当然,我会尝试更准确地描述这个问题。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 2017-07-18
    • 2011-09-04
    • 2018-09-13
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多