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', 'elixir']]] = None, parser_threshold: int = 0)[源代码]¶
使用相应的编程语言语法进行解析。
代码中的每个顶层函数和类都加载到单独的文档中。此外,还会生成一个额外的文档,包含除已分割的函数和类之外的上层代码。
这种方法可能会提高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” (*)
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) )
使用相应语言语法分割代码的语言解析器。
- 参数
language (可选[Languages]) – 如果为空(默认),它将尝试从源代码中推断语言。
parser_threshold (整数) – 激活解析所需的最小行数(默认为0)。
方法
__init__
([language, parser_threshold])使用相应语言语法分割代码的语言解析器。
lazy_parse
(blob)懒解析接口。
parse
(blob)贪婪地将blob解析为文档或多个文档。
- __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', 'elixir']] = None, parser_threshold: int = 0)[source]¶
使用相应语言语法分割代码的语言解析器。
- 参数
language(《可选》:`Literal`[‘cpp’、‘go’、‘java’、‘kotlin’、‘js’、‘ts’、‘php’、‘proto’、‘python’、‘rst’、‘ruby’、‘rust’、‘scala’、‘swift’、‘markdown’、‘latex’、‘html’、‘sol’、‘csharp’、‘cobol’、‘c’、‘lua’、‘perl’、‘elixir’]`]) - 如果为 None(默认),将尝试从源文件中推断语言。
parser_threshold (整数) – 激活解析所需的最小行数(默认为0)。