语言解析器#
- class langchain_community.document_loaders.parsers.language.language_parser.LanguageParser(language: Literal['cpp', 'go', 'java', 'kotlin', 'js', 'ts', 'php', 'proto', 'python', 'rst', 'ruby', 'rust', 'scala', 'markdown', 'latex', 'html', 'sol', 'csharp', 'cobol', 'c', 'lua', 'perl', 'elixir', 'sql'] | None = None, parser_threshold: int = 0)[source]#
使用相应的编程语言语法进行解析。
代码中的每个顶级函数和类都被加载到单独的文档中。 此外,还会生成一个额外的文档,其中包含剩余的顶级代码, 这些代码不包括已经分段处理的函数和类。
这种方法有可能提高QA模型在源代码上的准确性。
支持的代码解析语言有:
C: “c” (*)
C++: “cpp” (*)
C#: “csharp” (*)
COBOL: “cobol”
Elixir: “elixir”
Go: “go” (*)
Java: “java” (*)
JavaScript: “js” (需要包 esprima)
Kotlin: “kotlin” (*)
Lua: “lua” (*)
Perl: “perl” (*)
Python: “python”
Ruby: “ruby” (*)
Rust: “rust” (*)
Scala: “scala” (*)
SQL: “sql” (*)
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() Example instantiations to manually select the language: .. code-block:: python loader = GenericLoader.from_filesystem( "./code", glob="**/*", suffixes=[".py"], parser=LanguageParser(language="python") ) Example instantiations to set number of lines threshold: .. code-block:: python loader = GenericLoader.from_filesystem( "./code", glob="**/*", suffixes=[".py"], parser=LanguageParser(parser_threshold=200) )
语言解析器,使用相应语言的语法拆分代码。
- Parameters:
language (可选[Language]) – 如果为 None(默认值),它将尝试从源中推断语言。
parser_threshold (int) – 激活解析所需的最小行数(默认为0)。
方法
__init__
([language, parser_threshold])使用相应语言语法拆分代码的语言解析器。
lazy_parse
(blob)懒解析接口。
parse
(blob)急切地将blob解析为一个或多个文档。
- __init__(language: Literal['cpp', 'go', 'java', 'kotlin', 'js', 'ts', 'php', 'proto', 'python', 'rst', 'ruby', 'rust', 'scala', 'markdown', 'latex', 'html', 'sol', 'csharp', 'cobol', 'c', 'lua', 'perl', 'elixir', 'sql'] | None = None, parser_threshold: int = 0)[source]#
语言解析器,使用相应语言的语法拆分代码。
- Parameters:
language (Literal['cpp', 'go', 'java', 'kotlin', 'js', 'ts', 'php', 'proto', 'python', 'rst', 'ruby', 'rust', 'scala', 'markdown', 'latex', 'html', 'sol', 'csharp', 'cobol', 'c', 'lua', 'perl', 'elixir', 'sql'] | None) – 如果为 None(默认值),它将尝试从源代码中推断语言。
parser_threshold (int) – 激活解析所需的最小行数(默认为0)。
使用 LanguageParser 的示例