使用 Gensim,在我训练自己的模型后,我可以使用model.wv.most_similar('cat', topn=5)并获取cat向量空间中最接近的 5 个单词的列表。例如:
from gensim.models import Word2Vec
model = Word2Vec.load('mymodel.model')
In: model.wv.most_similar('cat', topn=5)
Out: ('kitten', .99)
('dog', .98)
...
Run Code Online (Sandbox Code Playgroud)
使用 spaCy,根据文档,我可以执行以下操作:
import spacy
nlp = spacy.load('en_core_web_md')
tokens = nlp(u'dog cat banana')
for token1 in tokens:
for token2 in tokens:
print(token1.text, token2.text, token1.similarity(token2))
Run Code Online (Sandbox Code Playgroud)
它给出了指定字符串中标记的相似性。但是通过文档和搜索,我无法弄清楚是否有一种 gensim 类型的方式来列出带有nlp = spacy.load('en_core_web_lg')或的预加载模型的所有相似词nlp = spacy.load('en_vectors_web_lg')。有没有办法做到这一点?
我正在绘制一些数据并具有以下代码:
ggplot(aes(x = x, y = y), data = data) +
geom_point(alpha = 1/15, color = 'blue')+
scale_y_continuous('y')+
scale_x_continuous('x')+
geom_smooth(stat = 'smooth', color = 'Red')
Run Code Online (Sandbox Code Playgroud)
该图如下所示:
但是,如果我在geom_smooth函数中指定'gam' ,例如:
geom_smooth(stat = 'smooth', color = 'Red', method = 'gam')
Run Code Online (Sandbox Code Playgroud)
我得到了不同的结果:
为什么会这样?
我正在尝试绘制一些数据的图表,我的代码如下所示:
library('ggplot2')
library('tidyr')
library('ggthemes')
library('showtext')
font_add_google('Syncopate', 'Syncopate')
showtext_auto()
ggplot(aes(x = X, group=1), data = glassdoor)+
geom_line(aes(y = col1, color = 'red'))+
geom_line(aes(y = col2, color = 'blue'))+
geom_line(aes(y = col3, color = 'magenta'))+
geom_line(aes(y = col4, color = 'yellow'))+
theme(text = element_text(family = "Syncopate"))+
ggtitle('A Long Test Title')
Run Code Online (Sandbox Code Playgroud)
切分音是一种独特的字体,请参见此处。但我的可视化字体看起来像这样(这是一个测试图,忽略其整体的糟糕性):
但如果我加载像 Times New Roman 这样的系统主题,它就可以正常工作。为什么我的谷歌字体不使用 showtext 加载?
编辑
Jrakru 的答案有效,但请记住,您必须运行整个代码块:新字体将出现在保存的 png 文件中,但不会出现在预览窗口中。这并不是对答案的轻微反对,而是针对像我这样希望字体显示在 RStudio 控制台中的其他人,因此省略了代码的ggsave和部分。png
我正在尝试创建一个数据集,允许我根据来自 Python IMDb API 的演员 ID 和电影 ID 加入演员和电影。现在,我正试图从演员的片目中提取电影 ID 列表,但无法做到。
例如,我知道 IMDb 上 Rodney Dangerfield 的 ID 是 0001098。我可以通过以下方式查看他的整个片目:
from imdb import IMDb
ia = IMDb()
actor_results = ia.get_person_filmography('0001098')
Run Code Online (Sandbox Code Playgroud)
它返回一个大字典。我可以看到他获得表演功劳的最新电影:
actor_results['data']['filmography'][0]['actor'][0]
Run Code Online (Sandbox Code Playgroud)
返回:
<Movie id:0179803[http] title:_Angels with Angles (2005)_>
Run Code Online (Sandbox Code Playgroud)
此对象类型是imdb.Movie.Movie. 这个对象有几个键/值对:
In: results['data']['filmography'][0]['actor'][0].items()
Out:
[('title', 'Angels with Angles'),
('kind', 'movie'),
('year', 2005),
('canonical title', 'Angels with Angles'),
('long imdb title', 'Angels with Angles (2005)'),
('long imdb canonical title', 'Angels with Angles (2005)'),
('smart canonical title', 'Angels with Angles'), …Run Code Online (Sandbox Code Playgroud) 我有看起来像这样的多索引数据框:
value
year name
1921 Ah 40
1921 Ai 90
1922 Ah 100
1922 Ai 7
Run Code Online (Sandbox Code Playgroud)
其中year和name是索引。我想选择名称Ai出现的每一行。我已经尝试过df.loc[(:,'Ai')],df.loc['Ai']但是都给出了错误。如何仅使用名称列编制索引?
我正在清理一些文本数据,但无法找到包含某些字符串的行。如果我做一个简单的布尔值,我会得到:
'<! [CDATA[! function( d,s, id){varjs, fjs=d. getElementsByTagName( s)[0],p= ^' in articles.loc[25111, 'content']
True
Run Code Online (Sandbox Code Playgroud)
但是,如果我选择具有完全相同字符串的行,则会得到一个空数据框:
articles[articles['content'].str.contains('<! [CDATA[! function( d,s, id){varjs, fjs=d. getElementsByTagName( s)[0],p= ^')]
id title author date content year month publication category digital section url stems
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?
我有一个看起来像这样的数据框:
index name value
1 Foo 9
2 Bar 11
3 Foo 2
4 Bar 4
5 Foo,Bar 3
Run Code Online (Sandbox Code Playgroud)
如果df.groupby('name').count()我知道了:
value
name
Foo 2
Bar 2
Foo,Bar 1
Run Code Online (Sandbox Code Playgroud)
我想拆分Foo,Bar并在结果元组中存在的索引中的每个值加1,以使分组的数据框看起来像:
value
name
Foo 3
Bar 3
Run Code Online (Sandbox Code Playgroud)
我可以想到使用for循环执行此操作的方法,但我想知道是否存在一些内置的熊猫方法来解决此类问题。
我只是尝试对数据帧进行排序并使用以下函数:
df[df.count >= df.count.quantile(.95)]
Run Code Online (Sandbox Code Playgroud)
它返回了错误:
AttributeError: 'function' object has no attribute 'quantile'
Run Code Online (Sandbox Code Playgroud)
但将该系列包括在内可以正常工作:
df[df['count'] >= df['count'].quantile(.95)]
Run Code Online (Sandbox Code Playgroud)
这不是我第一次根据这种区别得到不同的结果,但它通常也不会发生,我一直认为这些是两个相同的对象.
为什么会这样?
我的数据看起来像:
year mean.streak
1958 2.142857
1959 3.066667
1960 2.166667
1961 2.190476
Run Code Online (Sandbox Code Playgroud)
我的局部回归图的代码如下所示:
ggplot(aes(x = year, y = mean.streak, color = year), data = streaks)+
geom_point(color = 'black')+
geom_smooth(method = 'loess')
Run Code Online (Sandbox Code Playgroud)
和输出:
我想通过将平滑线穿过所有数据点而不是典型的锯齿状来捕获数据的正弦模式geom_line。我通过编写以下内容尝试多项式插值:
ggplot(df)+
geom_point(aes(x = year, y = mean.streak, colour = year), size = 3) +
stat_smooth(aes(x = year, y = mean.streak), method = "lm",
formula = y ~ poly(x, 57), se = FALSE)
Run Code Online (Sandbox Code Playgroud)
摘自该线程。但我收到错误:
Warning message:
Computation failed in `stat_smooth()`:
'degree' must be less than …Run Code Online (Sandbox Code Playgroud) 我有一组链接,如:
['http://www.nytimes.com/2016/12/31/us/politics/house-republicans-health-care-suit.html?partner=rss&emc=rss" rel="standout"></atom:link>',
'http://www.nytimes.com/2016/12/31/nyregion/bronx-murder-40th-precinct-police-residents.html</guid>',
'http://www.nytimes.com/2016/12/30/movies/tyrus-wong-dies-bambi-disney.html?partner=rss&emc=rss',
'http://www.nytimes.com/2016/12/30/obituaries/among-deaths-in-2016-a-heavy-toll-in-pop-music.html</guid>',
'http://www.nytimes.com/video/world/100000004830728/daybreak-around-the-world.html?partner=rss&emc=rss']
Run Code Online (Sandbox Code Playgroud)
我正在尝试迭代它们以删除之后的所有内容html.所以我有:
cleanitems = []
for item in links:
cleanitems.append(re.sub(r'html(.*)', '', item))
Run Code Online (Sandbox Code Playgroud)
哪个回报:
['http://www.nytimes.com/2016/12/31/us/politics/house-republicans-health-care-suit.',
'http://www.nytimes.com/2016/12/31/nyregion/bronx-murder-40th-precinct-police-residents.',
'http://www.nytimes.com/2016/12/30/movies/tyrus-wong-dies-bambi-disney.',
'http://www.nytimes.com/2016/12/30/obituaries/among-deaths-in-2016-a-heavy-toll-in-pop-music.',
'http://www.nytimes.com/video/world/100000004830728/daybreak-around-the-world.]
Run Code Online (Sandbox Code Playgroud)
对于为什么它包含html在捕获组中感到困惑.谢谢你的帮助.