Texthero TF-IDF 计算
Texthero TD-IDF Calculation
通过Texthero计算TF-IDF有什么区别:
import texthero as hero
s = pd.Series(["Sentence one", "Sentence two"])
hero.tfidf(s, return_feature_names=True)
0 [0.5797386715376657, 0.8148024746671689, 0.0]
1 [0.5797386715376657, 0.0, 0.8148024746671689]
['Sentence', 'one', 'two'])
还有 sklearn 的 TD-IDF?鉴于这些例句,我希望 sklearn 的结果。
from sklearn.feature_extraction.text import TfidfVectorizer
...
Sentence one two
0 0.0 0.346574 0.000000
1 0.0 0.000000 0.346574
简答
tfidf
不对输入文本进行预处理,仅应用 TF-IDF 算法,而默认情况下 TfidfVectorizer
对输入进行预处理。
函数签名
不同之处在于您处理这两个框架的方式。
查看函数签名:
scikit-learn TfidfVectorizer
:
sklearn.feature_extraction.text.TfidfVectorizer(
*,
input='content',
encoding='utf-8',
decode_error='strict',
strip_accents=None,
lowercase=True,
preprocessor=None,
tokenizer=None,
analyzer='word',
stop_words=None,
token_pattern='(?u)\b\w\w+\b',
ngram_range=(1, 1),
max_df=1.0,
min_df=1,
max_features=None,
vocabulary=None,
binary=False,
dtype=<class 'numpy.float64'>,
norm='l2',
use_idf=True,
smooth_idf=True,
sublinear_tf=False
)
Texthero tfidf
:
tfidf(
s: pandas.core.series.Series,
max_features=None,
min_df=1,
return_feature_names=False
)
对于 scikit-learn,不同的文本预处理步骤包含在 TfidfVectorizer
中。以Texthero的tfidf
为例,没有进行文本预处理。
你的例子
在您的示例中,tf-idf 值在两种情况下是不同的,例如 TfidfVectorizer
默认情况下将所有字符转换为小写。
哪个比较好?
根据您的任务,两种解决方案中的一种可能更方便。
如果您正在使用 Pandas Dataframe/Series 进行自然语言预处理任务,并且希望对代码进行精细控制,那么使用 tfidf
可能更方便.
另一方面,如果您正在处理更通用的 ML 任务,您还需要处理一些文本并且只想快速表示它,那么您可以选择 TfidfVectorizer
使用默认设置。
通过Texthero计算TF-IDF有什么区别:
import texthero as hero
s = pd.Series(["Sentence one", "Sentence two"])
hero.tfidf(s, return_feature_names=True)
0 [0.5797386715376657, 0.8148024746671689, 0.0]
1 [0.5797386715376657, 0.0, 0.8148024746671689]
['Sentence', 'one', 'two'])
还有 sklearn 的 TD-IDF?鉴于这些例句,我希望 sklearn 的结果。
from sklearn.feature_extraction.text import TfidfVectorizer
...
Sentence one two
0 0.0 0.346574 0.000000
1 0.0 0.000000 0.346574
简答
tfidf
不对输入文本进行预处理,仅应用 TF-IDF 算法,而默认情况下 TfidfVectorizer
对输入进行预处理。
函数签名
不同之处在于您处理这两个框架的方式。
查看函数签名:
scikit-learn TfidfVectorizer
:
sklearn.feature_extraction.text.TfidfVectorizer(
*,
input='content',
encoding='utf-8',
decode_error='strict',
strip_accents=None,
lowercase=True,
preprocessor=None,
tokenizer=None,
analyzer='word',
stop_words=None,
token_pattern='(?u)\b\w\w+\b',
ngram_range=(1, 1),
max_df=1.0,
min_df=1,
max_features=None,
vocabulary=None,
binary=False,
dtype=<class 'numpy.float64'>,
norm='l2',
use_idf=True,
smooth_idf=True,
sublinear_tf=False
)
Texthero tfidf
:
tfidf(
s: pandas.core.series.Series,
max_features=None,
min_df=1,
return_feature_names=False
)
对于 scikit-learn,不同的文本预处理步骤包含在 TfidfVectorizer
中。以Texthero的tfidf
为例,没有进行文本预处理。
你的例子
在您的示例中,tf-idf 值在两种情况下是不同的,例如 TfidfVectorizer
默认情况下将所有字符转换为小写。
哪个比较好?
根据您的任务,两种解决方案中的一种可能更方便。
如果您正在使用 Pandas Dataframe/Series 进行自然语言预处理任务,并且希望对代码进行精细控制,那么使用 tfidf
可能更方便.
另一方面,如果您正在处理更通用的 ML 任务,您还需要处理一些文本并且只想快速表示它,那么您可以选择 TfidfVectorizer
使用默认设置。