问题: 我有一个单词列表(在.txt文件中),其中包含编程语言和相关技术的名称(每行一个技术),例如:
AngularJS
Grunt
T-SQL
MySQL
SQL Server
SQL
Bash
Git
Android
Android Studio
Ajax
Design patterns
Frontend developer
等等(该列表包含大约250个术语,但它肯定会变大)。
我还有一个pandas数据框,其中一列包含与IT相关的职位的全文(每行一个)。
我想要做的是在现有数据框中添加另一列,在该列中保留在作业说明中找到的所有关键字(来自.txt文件)的列表。
示例:职位描述说“我们正在寻找前端开发人员,使用 Angular-JS 拥有+ 3年的经验。 Grunt < / em>, git 和设计模式是必须的......“然后列表将是['Frontend developer', 'AngularJS', 'Grunt', 'Git', 'Design patterns']
。
我目前的(工作方式)方法:
# set_keywords contains a Python set with all keywords in the .txt file
lmb_extract_keywords = (lambda post: filter(None, set(w if w.lower() in post.lower() else None for w in set_keywords)))
# df_posts is a pandas dataframe with only one column containing one full post per row
df_posts['keywords'] = df_posts.apply(lmb_extract_keywords)
问题:
1)有没有办法提高效率? (熊猫数据框有近10000行)。我愿意接受各种建议(正则表达式,文本挖掘框架等)。
2)在某些情况下,我会在输出列表中找到重复的一般术语。想象一下,如果工作描述说'Android Studio',那么输出列表将是['Android', 'Android Studio']
,而我希望它是['Android Studio']
。如何避免这些情况?
3)如果作业描述说'前端开发'那么我永远找不到匹配(尽管我在.txt中列出了前端开发者) 。此外,如果该技术的名称如C
,那么我总能找到它(任何带有c字母的单词都会匹配)。如何解决这些问题?
提前致谢!
答案 0 :(得分:1)
当搜索某事时,有两种方法可以加快速度:
上述预处理似乎需要花费很多时间,但如果您的职位描述有点长,则会加快搜索速度。
避免重复使用:
要处理 C ,请按照我上面的说法提取每个单词并进行严格比较,而不是检查子字符串。
要检测拼写不同的字词,您可以: