langchain_community.document_loaders.parsers.language.language_parser
.LanguageParser¶
- class langchain_community.document_loaders.parsers.language.language_parser.LanguageParser(language: Optional[Literal['cpp', 'go', 'java', 'kotlin', 'js', 'ts', 'php', 'proto', 'python', 'rst', 'ruby', 'rust', 'scala', 'swift', 'markdown', 'latex', 'html', 'sol', 'csharp', 'cobol', 'c', 'lua', 'perl']] = None, parser_threshold: int = 0)[source]¶
使用相应的编程语言语法进行解析。
代码中的每个顶层函数和类都加载到单独的文档中。 此外,还会生成一个额外的文档,其中包含剩余的顶层代码,不包括已经分割的函数和类。
这种方法可能会提高源代码上的QA模型的准确性。
支持代码解析的语言有:
C语言: “c” (*)
C++语言: “cpp” (*)
C#语言: “csharp” (*)
COBOL语言: “cobol”
Go语言: “go” (*)
Java语言: “java” (*)
JavaScript语言: “js” (需要安装 esprima 包)
Kotlin语言: “kotlin” (*)
Lua语言: “lua” (*)
Perl语言: “perl” (*)
Python语言: “python”
Ruby语言: “ruby” (*)
Rust语言: “rust” (*)
Scala语言: “scala” (*)
TypeScript语言: “ts” (*)
带有 (*) 标记的项目需要安装 tree_sitter 和 tree_sitter_languages 包。使用 tree_sitter 可以很容易地添加对其他语言的支持,尽管目前需要修改 LangChain。
可以配置用于解析的语言,以及基于语法激活分割所需的最小行数。
如果没有明确指定语言,则 LanguageParser 将根据文件扩展名推断语言。
示例:
from langchain_community.document_loaders.generic import GenericLoader from langchain_community.document_loaders.parsers import LanguageParser loader = GenericLoader.from_filesystem( "./code", glob="**/*", suffixes=[".py", ".js"], parser=LanguageParser() ) docs = loader.load() 手动选择语言的示例实例化: .. code-block:: python loader = GenericLoader.from_filesystem( "./code", glob="**/*", suffixes=[".py"], parser=LanguageParser(language="python") ) 设置行数阈值的示例实例化: .. code-block:: python loader = GenericLoader.from_filesystem( "./code", glob="**/*", suffixes=[".py"], parser=LanguageParser(parser_threshold=200) )
语言解析器,根据各种语言的语法来分割代码。
- 参数:
language:如果为None(默认值),将尝试从源代码中推断语言。 parser_threshold:激活解析所需的最小行数(默认为0)。
Methods
__init__
([language, parser_threshold])语言解析器,根据各种语言的语法来分割代码。
lazy_parse
(blob)懒解析接口。
parse
(blob)将blob急切地解析为一个文档或多个文档。
- Parameters
language (Optional[Language]) –
parser_threshold (int) –
- __init__(language: Optional[Literal['cpp', 'go', 'java', 'kotlin', 'js', 'ts', 'php', 'proto', 'python', 'rst', 'ruby', 'rust', 'scala', 'swift', 'markdown', 'latex', 'html', 'sol', 'csharp', 'cobol', 'c', 'lua', 'perl']] = None, parser_threshold: int = 0)[source]¶
语言解析器,根据各种语言的语法来分割代码。
- 参数:
language:如果为None(默认值),将尝试从源代码中推断语言。 parser_threshold:激活解析所需的最小行数(默认为0)。
- Parameters
language (Optional[Literal['cpp', 'go', 'java', 'kotlin', 'js', 'ts', 'php', 'proto', 'python', 'rst', 'ruby', 'rust', 'scala', 'swift', 'markdown', 'latex', 'html', 'sol', 'csharp', 'cobol', 'c', 'lua', 'perl']]) –
parser_threshold (int) –