语言解析器#
- 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 的示例
