首页 > 编程语言 >面了搜狐 NLP 算法工程师,这次收获满满。。。

面了搜狐 NLP 算法工程师,这次收获满满。。。

时间:2024-03-14 23:58:25浏览次数:28  
标签:满满 NLP 方式 搜狐 nums 通俗易懂 算法 len 讲解

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂同学、参加社招和校招面试的同学,针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。

今天整理我们社群一个同学面试 NLP 算法方向的面试题,分享给大家,希望对后续找工作的有所帮助。喜欢记得点赞、收藏、关注。更多技术交流&面经学习,可以加入我们。

1. 自我介绍

在自我介绍环节,我清晰地阐述了个人基本信息、教育背景、工作经历和技能特长,展示了自信和沟通能力。

2. 技术问题回答

2.1 介绍一下 rouge,bleu,他们两个之间有什么区别?

在机器翻译任务中,BLEU 和 ROUGE 是两个常用的评价指标:

  • BLEU(Bilingual Evaluation Understudy): BLEU是一种用于评估机器翻译结果质量的指标。它主要侧重于衡量机器翻译输出与参考翻译之间的相似程度,着重于句子的准确性和精确匹配。BLEU通过计算N-gram(连续N个词)的匹配程度,来评估机器翻译的精确率(Precision)。

  • ROUGE(Recall-Oriented Understudy for Gisting Evaluation): ROUGE是一种用于评估文本摘要(或其他自然语言处理任务)质量的指标。与BLEU不同,ROUGE主要关注机器生成的摘要中是否捕捉到了参考摘要的信息,着重于涵盖参考摘要的内容和信息的完整性。ROUGE通过计算N-gram的共现情况,来评估机器生成的摘要的召回率(Recall)。

  • 区别:

  • BLEU侧重于衡量翻译的准确性和精确匹配程度,更偏向于Precision;

  • ROUGE侧重于衡量摘要的信息完整性和涵盖程度,更偏向于Recall。

这两个指标在不同的任务和应用场景中都有其重要性,因此在评估自然语言处理模型时,经常会同时使用它们来综合考虑模型的表现。

2.2 介绍一下 常见大模型结构(llama2,glm)?

  • BART (bi Encoder+casual Decoder,类bert的方法预训练)

  • T5 (Encoder+Decoder,text2text预训练)

  • GPT(Decoder主打zero-shot)

  • GLM (mask的输入部分是双向注意力,在生成预测的是单向注意力)

2.3 介绍一下 ptuning,lora tune?

2.4 为什么transformer有长度限制(太长了性能下降)?

transformer论文中提出了一种基于自注意力机制(self-attention)的新型神经网络结构,它可以处理序列到序列(sequence-to-sequence)的任务,如机器翻译、文本摘要、语音识别等。transformer模型由编码器(encoder)和解码器(decoder)组成,编码器将输入序列映射为一组隐藏向量,解码器根据这些向量生成输出序列。

transformer模型的一个限制是,它的自注意力机制需要计算输入序列中每个token与其他所有token之间的相关性,这个计算的时间和空间复杂度都是输入序列长度的平方。因此,当输入序列过长时,transformer模型会消耗过多的计算资源和存储空间,导致效率降低和性能下降。

3. Leetcode 题

具体题意记不清了,但是类似 【215. 数组中的第K个最大元素】

  • 题目内容

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入: [3,2,1,5,6,4], k = 2
输出: 5
示例 2:

输入: [3,2,3,1,2,4,5,5,6], k = 4
输出: 4
  • 提示:

  • 1 <= k <= nums.length <= 105

  • -104 <= nums[i] <= 104

  • 题目解答

class Solution:
    def findKthLargest(self, nums: List[int], k: int) -> int:
        nums_len = len(nums)
        # 1.构建大顶堆
        for i in range(math.floor(nums_len/2),-1,-1):
            # 从第一个非叶子结点从下至上,从右至左调整结构
            self.adjustHeap(nums,i,nums_len)
        # 2.调整堆结构+交换堆顶元素与末尾元素
        for i in range(nums_len-1,nums_len-1-k,-1):
            # 将堆顶元素与末尾元素进行交换
            self.swap(nums,0,i)
            # 重新对堆进行调整
            self.adjustHeap(nums,0,i)
        return nums[-k]
    
    def adjustHeap(self,nums,i,nums_len):
        '''
            功能:交调整大顶堆(仅是调整过程,建立在大顶堆已构建的基础上)
            @param nums        List 数组
            @param i           int  索引1
            @param nums_len    int  长度 
            @retusn
        '''
        left = 2*i+1    # i 的 左节点
        right = 2*i+2   # i 的 右节点
        largest = i     # 用于标记当前最大的节点值得索引,先取出当前元素i
        # 比较 左节点 和 当前节点 的值
        if left < nums_len and nums[left] > nums[largest]:
            largest = left
        # 比较 左节点 和 当前节点 的值
        if right<nums_len and nums[right]>nums[largest]:
            largest = right
        # 将 当前节点 和 最大节点 交换,然后重新构建 堆
        if largest!=i:
            self.swap(nums,i,largest)
            self.adjustHeap(nums,largest,nums_len)
        
    def swap(self,nums,a,b):
        '''
            功能:交换元素
            @param nums List 数组
            @param a    int  索引1
            @param b    int  索引2 
            @retusn
        '''
        nums[a],nums[b] = nums[b],nums[a]

技术交流群

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

我们建了算法岗技术与面试交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2060,备注:技术交流

用通俗易懂方式讲解系列

标签:满满,NLP,方式,搜狐,nums,通俗易懂,算法,len,讲解
From: https://blog.csdn.net/2201_75499313/article/details/136638671

相关文章

  • 自然语言处理(NLP)—— 生成式模型和判别式模型
            生成式模型和判别式模型是机器学习领域两大类模型,它们在自然语言处理、计算机视觉等领域都有广泛的应用。理解这两类模型的区别对于选择正确的模型来解决特定问题非常重要。1.生成式模型(GenerativeModels)        生成式模型旨在学习数据的联合......
  • 自然语言处理(NLP)—— 语义关系提取
            语义关系是指名词或名词短语之间的联系。这些关系可以是表面形式(名词性实体)之间的联系,也可以是知识工程中概念之间的联系。在自然语言处理(NLP)和文本挖掘领域,识别和理解这些语义关系对于信息提取、知识图谱的构建以及文本理解都是非常重要的。1语义关系的例子......
  • C#常用NLP库
    在DotNet开发中,有几个常用的NLP(自然语言处理)开发库可供选择。以下是几个流行的DotNetNLP库:Stanford.NLP:Stanford.NLP是一个开源的DotNet库,提供了各种NLP工具和算法,例如词性标注、命名实体识别、分词、语法分析等。它是基于Stanford大学的NLP工具包开发的,功能强大且经过广泛使用......
  • PaddleNLP命名实体识别环境搭建&推理测试
    引子最近手上接了一个活儿,基于文本语料的实体抽取任务,调研了一圈发现目前开源轮子做的比较好的也就是PaddleNLP(大模型那种巨废资源,且幻觉严重的,不予考虑)。OK,那就让我们开始吧。一、命名实体识别概念命名实体识别(NamedEntitiesRecognition,NER)是自然语言处理的一个基础任务。其......
  • NLP-情感分析 Prompting
    **NLP-情感分析Prompting**注:本文是Transformers快速入门Prompting章节的学习笔记,更详细的分析请参见原文。写在前面Github地址:https://github.com/Lockegogo/NLP_Tasks/tree/main/text_cls_prompt_senti本项目使用Prompting方法完成情感分析任务。Prompting方法......
  • 中国的AI领域发展的重大不足 —— 数据缺少,尤其是自然语言领域(NLP)、大模型领域
    全世界公开可用的语言文本中绝大部分是英文文本,其中中文文本只有1.5%相关:China'sBettingBigOnArtificialIntelligence.CouldTheUSLoseTheAIRace?|Insight......
  • NLP自然语言处理—主题模型LDA案例:挖掘人民网留言板文本数据|附代码数据
    全文链接:http://tecdat.cn/?p=2155最近我们被客户要求撰写关于NLP自然语言处理的研究报告,包括一些图形和统计输出。随着网民规模的不断扩大,互联网不仅是传统媒体和生活方式的补充,也是民意凸显的地带。领导干部参与网络问政的制度化正在成为一种发展趋势,这种趋势与互联网发展的时......
  • HanLP — 命名实体识别
    目录8.命名实体识别8.1概述8.2基于隐马尔可夫模型序列标注的命名实体识别8.3基于感知机序列标注的命名实体识别8.4基于条件随机场序列标注的命名实体识别8.5命名实体识别标准化评测8.6自定义领域命名实体识别8.命名实体识别8.1概述命名实体文本中有一些描......
  • HanLP — 词性标注
    词性(Part-Of-Speech,POS)指的是单词的语法分类,也称为词类。同一个类别的词语具有相似的语法性质所有词性的集合称为词性标注集。词性的用处当下游应用遇到OOV时,可以通过OOV的词性猜测用法词性也可以直接用于抽取一些信息,比如抽取所有描述特定商品的形容词等词性标注词性标注指......
  • 自然语言处理NLP:情感分析疫情下的新闻数据
    原文链接:http://tecdat.cn/?p=12310原文出处:拓端数据部落公众号 新冠肺炎的爆发让今年的春节与往常不同。与此同时,新闻记录下了这场疫情发展的时间轴。▼为此我们分析了疫情相关的新闻内容、发布时期以及发布内容的主题和情感倾向这些方面的数据,希望通过这些数据,能对这场疫......