我有一个标签列表,我试图打破一些包含多个单词的标签。
data = ['开源','软件开发','JavaScript','技术','网络开发''编程','移动开发','技术','专业''软件''HTML5' ],[..] ....]
我清理数据和保留一些独特标签的代码 -
def break_tags(data):
big_tags = []
for n in range(len(data)):
tags = []
for item in data[n][5:23]:
if item != nan:
if 'open source' in str(item).lower():
tags.append('open source')
if 'data science' in str(item).lower():
tags.append('data science')
else:
item = str(item).lower().split(' ')
tags.extend([e.strip("'():,&;+?][ ") for e in item if e not in remove])
big_tags.append(tags)
return big_tags
运行break_tags(数据)后的结果
original_list1 - ['开源''软件开发''JavaScript''技术','Web开发''编程','移动开发','技术','专业''软件''HTML5']
new_list1 - ['开源','开放','来源','软件','开发', 'javascript','技术','网络','开发','编程', '移动','发展','技术','专业人士','软件', 'HTML5']
原始列表2:['数据管理','云计算','大数据','数据分析', '数据可视化','预测分析','NoSQL', '数据科学','数据分析和建模', '统计和数据分析']
new_list2:['数据','管理','云','计算','大数据','大', '数据','数据','分析','数据','可视化','预测', 'analytics','nosql','数据科学','数据','科学','数据', '分析','建模','统计','数据','分析']
我编写了保持'开源'的功能& '数据科学'并将所有其他标签分解为单个单词。但显然存在一些逻辑上的缺陷,不仅使这两个标签保持完整,而且还将这两个标签分开,单独的单词(参见上面的粗体字)
有人可以帮助识别问题吗?谢谢!
答案 0 :(得分:1)
您的问题在于您的if / if / else条件:
if 'open source' in str(item).lower():
tags.append('open source')
if 'data science' in str(item).lower():
tags.append('data science')
else:
item = str(item).lower().split(' ')
tags.extend([e.strip("'():,&;+?][ ") for e in item if e not in remove]
假设项目是开源的'那么你将通过第一个if和追加开源#39;然后你将测试VS'数据科学'并通过其他集团。
您必须使用以下内容进行测试:
if ('data science' in str(item).lower()) or ('open source' in str(item).lower()):
if ('data science' in str(item).lower()):
tags.append('data science')
else:
tags.append('open source')
else:
item = str(item).lower().split(' ')
tags.extend([e.strip("'():,&;+?][ ") for e in item if e not in remove]
或者,假设str(item).lower()
完全是数据科学'或者'开源':
if str(item).lower() in ['data science', 'open source']:
tags.append(str(item).lower())
else:
item = str(item).lower().split(' ')
tags.extend([e.strip("'():,&;+?][ ") for e in item if e not in remove]