当前位置: 首页 > news >正文

韩国网页设计公司网站谷歌排名

韩国网页设计公司网站,谷歌排名,HTML网站制作设计,专门做二手笔记本批发的网站一、概念 新词发现是NLP的一个重要任务,旨在从大量的文本数据中自动识别和提取出未在词典中出现的新词或短语,这对于信息检索、文本挖掘、机器翻译等应用具有重要意义,因为新词往往包含了最新的知识和信息。 随着互联网的不断发展&#xff0c…

一、概念

        新词发现是NLP的一个重要任务,旨在从大量的文本数据中自动识别和提取出未在词典中出现的新词或短语,这对于信息检索、文本挖掘、机器翻译等应用具有重要意义,因为新词往往包含了最新的知识和信息。

        随着互联网的不断发展,每一年都有着大量的新兴网络热词。如果在NLP建模过程中这些热词恰好在模型词典中,那么就能较好地保留语义信息,否则这部分信息就会丢失。即便是大模型,在不了解新词的前提下也无法得到一个令人满意的响应。新词发现技术一定程度上为缓解out of vocabulary的问题提供了可行方式。

二、原理及实现

 

        这里,我们参考广为人知的《互联网时代的社会语言学:基于SNS的文本数据挖掘》中的策略来进行新词发现的讲解。

1、原理

        新词发现的原理主要基于以下几个方面:

(1)词频统计

        新词通常在文本中出现的频率较高,因此可以通过统计词频来初步筛选出可能的新词。

(2)凝固度(Cohesion)

        凝固度用于衡量一个词组内部的紧密程度,常见的方法是计算词组的互信息(Mutual Information, MI)或点互信息(Pointwise Mutual Information, PMI)。高凝固度表示词组内部的词之间关系紧密,也就表明词组内部中的字词常常共同出现,则该词组更有可能是一个新词。

        假设现在我们有一个词组eq?w%20%3D%20w_%7B1%7Dw_%7B2%7D...w_%7Bn%7D,其中eq?w_%7Bi%7D表示词组中的第 i 个字或者词,那么我们可以使用如下公式计算凝固度(示例之一,也可以使用其他常见公式):

eq?Cohesion%28w%29%20%3D%20min%28%5Cfrac%7BP%28w%29%7D%7BP%28w_%7B1%7D%29%20%5Ccdot%20P%28w_%7B2%7D...w_%7Bn%7D%29%7D%2C%20%5Cfrac%7BP%28w%29%7D%7BP%28w_%7B1%7Dw_%7B2%7D%29%20%5Ccdot%20P%28w_%7B3%7D...w_%7Bn%7D%29%7D%2C...%2C%5Cfrac%7BP%28w%29%7D%7BP%28w_%7B1%7D...w_%7Bn-1%7D%29%20%5Ccdot%20P%28w_%7Bn%7D%29%7D%29

        其中,P(w)表示词组w的概率,通过词频除以总次数来得到;分母中的左半部分如eq?P%28w_%7B1%7D%29表示词组的前n个词的概率,而右半部分如eq?P%28w_%7B2%7D...w_%7Bn%7D%29则表示剩余部分的概率。

3、左右熵(Left and Right Entropy)

        左右熵用于衡量一个词组在上下文中的多样性,高左右熵表示词组在不同上下文中出现的多样性较高,是新词的可能性也更大。假设现在我们有一个词组w,那么它的左熵计算公式为:

eq?Left%20Entropy%28w%29%20%3D%20-%5Csum_%7Bc%20%5Cin%20L%28w%29%7DP%28c%7Cw%29logP%28c%7Cw%29

        相应地,右熵的计算公式为:

eq?Right%20Entropy%28w%29%20%3D%20-%5Csum_%7Bc%20%5Cin%20R%28w%29%7DP%28c%7Cw%29logP%28c%7Cw%29

        其中,L(w)表示在词组w左侧出现的上文集合,而R(w)则表示词组w右侧出现的下文集合。P(c|w)表示在词组w左侧或者右侧出现上下文c的条件概率。

2、实现

        由上可知,我们需要找的新词,内部字词顺序应当是稳定的,而其左右出现的词语数目应当是丰富的,那么我们可以通过以下几个步骤来进行新词发现:

  • 文本预处理:对原始文本进行分词、去除停用词、去除标点符号等预处理操作。其中,最为准确的分词方式是N-gram,否则一开始就分错了后面怎么算也找不出这个新词。
  • 特征计算:计算候选词的词频、凝固度和左右熵等特征。
  • 新词筛选:根据特征值排序筛选出可能的新词。

三、python实现

1、导入必要的库

from collections import defaultdict, Counter
import pandas as pd
import jieba
import math

2、编写候选词生成函数

        这里我们使用N-Gram,最大长度为4。

# 生成候选词
def generate_candidates(words, max_len=4):candidates = []for i in range(len(words)):for j in range(1, max_len + 1):if i + j <= len(words):candidate = ''.join(words[i:i + j])candidates.append(candidate)return candidates

3、计算凝固度和左右熵

        根据上面说到的公式来推算,加上一些异常处理防止除零即可。

# 计算凝固度
def calculate_cohesion(word, word_freq, total_count):if len(word) == 1:return 0sub_words = [word[:i] for i in range(1, len(word))]cohesion_values = []for sub_word in sub_words:left_freq = word_freq[sub_word]right_freq = word_freq[word[len(sub_word):]]if left_freq > 0 and right_freq > 0:cohesion_values.append(word_freq[word] / (left_freq * right_freq))if cohesion_values:return min(cohesion_values)else:return 0# 计算左右熵
def calculate_entropy(word, words):left_context = defaultdict(int)right_context = defaultdict(int)for i in range(len(words) - len(word) + 1):if ''.join(words[i:i + len(word)]) == word:if i > 0:left_context[words[i - 1]] += 1if i + len(word) < len(words):right_context[words[i + len(word)]] += 1left_entropy = -sum([count / sum(left_context.values()) * math.log(count / sum(left_context.values())) for count in left_context.values()])right_entropy = -sum([count / sum(right_context.values()) * math.log(count / sum(right_context.values())) for count in right_context.values()])return min(left_entropy, right_entropy)

4、应用

        这里我们使用kaggle上的微博热搜词条数据《MicroBlog-Hot-Search-Labeled》,数据量不大,但是热搜词条最能反映当前的新词热词。

df = pd.read_csv('weibo-hot-search-labeled.csv')
text = df['热搜词条'].tolist()
text = ' '.join(text)# 字级别分词
words = list(text)# 计算词频
candidates = generate_candidates(words)
candidates = [li for li in candidates if len(li)>1]
word_freq = Counter(candidates)# 筛选新词
total_count = sum(word_freq.values())
new_words = []
for word in word_freq:if len(word) > 1 and word_freq[word] > 1:cohesion = calculate_cohesion(word, word_freq, total_count)entropy = calculate_entropy(word, words)if cohesion > 0.2 and entropy > 0.5:new_words.append((word, word_freq[word], cohesion, entropy))# 打印新词
# 可以根据自己的需求排序
new_words.sort(key=lambda x: (-x[3], -x[2]))
for word, freq, cohesion, entropy in new_words[:20]:print(f"Word: {word}, Frequency: {freq}, Cohesion: {cohesion:.2f}, Entropy: {entropy:.2f}")

        可以看到,结果中有不少词确实是较为新颖,例如综艺词“勤深深”,又或者一些明星、游戏的名称。

6b15a1de30e74240a22d15214e58898c.png

四、总结

        结合新词发现技术,我们在一定程度上能够扩展我们NLP模型的词典,从而更准确地进行分词,进而使得最终生成的文本表示语义信息更为客观合理。当然,新词发现技术也并不是完全准确的,受语料规模等因素的影响,仍然会出现错误识别的问题。这就需要具体问题具体分析,例如可以通过后处理规则或者机器学习/深度学习模型来缓解该问题。

 

http://www.tj-hxxt.cn/news/20723.html

相关文章:

  • 做设计赚钱网站软件工程培训机构哪家好
  • 网站建设营销词app营销策略有哪些
  • 哪家招聘网站的猎头做的比较好网址生成短链接
  • 国外上国内网站很慢国外网站推广平台有哪些?
  • 深圳做网站做得比较好的公司运营推广的方式和渠道
  • 个人网站 目的百度平台电话
  • 网站现在一般做多大尺寸百度快照手机入口
  • 服务性企业网站关于营销的最新的新闻
  • 天津网站优化多少钱网站运营策划书
  • 营销型网站建设 案例全国各城市疫情高峰感染进度
  • 青岛 网站制作公司最佳磁力引擎吧
  • 音乐网站开发需求百度seo优化价格
  • 网站建设工作计划表百度网址是多少
  • 徐州网站排名公司哪家好网络营销的招聘信息
  • 长沙创建一个网站需要多少钱国内优秀网页设计赏析
  • 常州做网站企业石家庄seo网站排名
  • 单位网站建设运维情况重庆seo务
  • 临沂中文网站建设seo超级外链工具
  • 酷玛网站建设百度营销平台
  • 学校网站制作模板成都网站seo技术
  • 下载图片的网站建设b站推广网站
  • 婚礼网站怎么做电商怎么注册开店
  • 网站将导航条不滚动怎么做天堂网
  • 潍坊网站模板在哪百度开放平台登录
  • 网站建设常用的英文新站网站推广公司
  • 用局域网建设网站手机版百度入口
  • 运城建设网站媒体广告投放平台
  • 建设人大网站搜索引擎广告图片
  • 图片点开是网站怎么做软件开发公司
  • 大连网站哪家做的好?如何创建网站的快捷方式